Subject Re: Print receipt on pos
From Emeka Ossai <megameks@yahoo.com>
Date Sat, 03 Sep 2022 02:22:46 -0400
Newsgroups dbase.getting-started

Thank you Akshat for usual support. What should I do to print directly to the printer.

Thank you
Emeka



Akshat Kapoor Wrote:

> Good Evening Emeka,
>
> > I am working on pos application, everything is working well except I cannot print receipt on clicking save button. I use dbase9 and mysql.
> >
> > My problem is how can I code a routine such that when I click post button, it should print receipt based on my last update.
> >
> > Below is my POST onclick event
> >     function BTNPOST_onClick
> >                         
> >                         
> >          // prep query to get next batch No
> >          qGetBatchNo = new query()
> >          qGetBatchNo.database = form.d
> >          qGetBatchNo.requestLive = false
> >          qGetBatchNo.sql = [SELECT nextBatchNo FROM SYSCONTROL]
> >          qGetBatchNo.active = true
> >          //rGetBatchNo= qSYSCONTROL.rowset
> >          rGetBatchNo= qGetBatchNo.rowset
> >          rGetBatchNo.first()
> >          batchNo = rGetBatchNo.fields["nextbatchno"].value
> >          qGetBatchNo.active = false
> >  
> >                   
> >                 
> > // prepare insert query
> >        local qInsert
> >        qInsert = new query()
> >        qInsert.database = form.d
> >        qInsert.requestLive = false
> >        qInsert.sql = [INSERT INTO CASHIERBOOK (stockno, stockname, amount, amountb, unitofmeasure,oquantity, quantity, modeofpmt, entrydate, customername, userID, batchid, sysdate,;
> >                                                         systime,item,balance,grosstot, discountamt,netamt,cash,pos, price) ;
> >                       VALUES (:stockno,:stockname,:amount,:amountb,:unitofmeasure,:oquantity,:quantity,:modeofpmt,:entrydate,:customername,:userID,:batchid,:sysdate,;
> >                                                         :systime,:item,:balance,:grosstot, :discountamt,:netamt, :cash,:pos,:price)]
> >        qInsert.active = false
> >                 
> >                 
> >                 
> > // query for temp table
> >          qTempTable = new query()
> >          qTempTable.reuestLive = false
> >          qTempTable.sql = [SELECT * FROM CASHIER_TEMP WHERE userID = :userID]
> >                   qTempTable.database = form.d
> >          qTempTable.params["userID"] = _app.UserID
> >                   qTempTable.active = true
> >          rTempTable = qTempTable.rowset
> >                   rTempTable.first()
> >                 
> >                           
> >  
> > // loop through temp table data and insert each row into real table
> >          do while not rTempTable.endofset
> >          qInsert.active = false
> >          qInsert.params["batchid"] = rTempTable.fields["batchid"].value
> >          qInsert.params["stockno"] = rTempTable.fields["stockno"].value
> >          qInsert.params["stockname"] = rTempTable.fields["stockname"].value
> >                   qInsert.params["amount"] = rTempTable.fields["amount"].value
> >                   qInsert.params["amountb"] = rTempTable.fields["amountb"].value
> >                   qInsert.params["unitofmeasure"] = rTempTable.fields["unitofmeasure"].value
> >          qInsert.params["oquantity"] = rTempTable.fields["quantity"].value
> >                   qInsert.params["quantity"] = 0.00
> >                   //qInsert.params["branch"] = rTempTable.fields["branch"].value
> >                   qInsert.params["modeofpmt"] = rTempTable.fields["modeofpmt"].value
> >         // qInsert.params["bank"] = rTempTable.fields["bank"].value
> >          qInsert.params["customername"] = rTempTable.fields["customername"].value
> >          qInsert.params["userID"] = rTempTable.fields["userID"].value
> >          qInsert.params["item"] = "STOCK OUT"
> >                   qInsert.params["balance"] = 0.00
> >                   qInsert.params["entrydate"] = rTempTable.fields["entrydate"].value
> >                   qInsert.params["grosstot"] = form.txtbatchtotal.text
> > //        qInsert.params["discount"] = form.container1.discount.value
> >          qInsert.params["discountamt"] = form.container1.discountamt.value
> >                   qInsert.params["netamt"] = form.container1.netamt.value
> >                   qInsert.params["cash"] = form.container1.cash.value
> >                   qInsert.params["pos"] = form.container1.pos.value
> >                   qInsert.params["price"] = rTempTable.fields["buyprice"].value
> >                   qInsert.params["sysdate"] = date()
> >                   qInsert.params["systime"] = time()
> >                 
> >         
> >                    local wSearch
> >                         wSearch = new query()
> >                         wSearch.database = form.d
> >                         wSearch.requestLive = false
> >                         wSearch.sql = [SELECT * FROM CASHIERPOOL WHERE stockno = :stockno AND stockname <> "SERVICES"]
> >                         wSearch.params["stockno"] = rTempTable.fields["stockno"].value
> >                         wSearch.params["stockname"] = rTempTable.fields["stockname"].value
> >                         wSearch.active = true
> >                         if wSearch.rowset.count() = 1 // if found
> >                         
> >                         local wUpdate
> >                         wUpdate = new query()
> >                         wUpdate.database = form.d
> >                         wUpdate.requestLive = false
> >     // General Tab
> >                     wUpdate.sql = [UPDATE CASHIERPOOL SET quantity = :quantity where stockno =:stockno]
> >                         wUpdate.params["stockno"]  = rTempTable.fields["stockno"].value
> >                         wUpdate.params["quantity"]  = wSearch.rowset.fields['quantity'].value-rTempTable.fields["quantity"].value
> >                         wUpdate.requery()
> >                         wUpdate.active = false
> >                         endif
> >                         
> >                         
> >
> >         
> >     // General Tab
> >          // increment batch NO
> >          qInc = new query()
> >          qInc.database = form.d
> >          qInc.requestLive = false
> >          qInc.sql = [UPDATE SYSCONTROL SET nextBatchNo = :nextBatchNo]
> >          qInc.params["nextBatchNo"] = batchNo + 1
> >          qInc.requery()
> >          qInc.active = false
> >          qinsert = null
> >                 
> >                         // show next number in Spin Control
> >                         form.spnBatchNo.value = batchNo + 1
> >  
> >                         // Delete transactions from temp table
> >                         qDelete = new query()
> >                         qDelete.requestLive = false
> >                         qDelete.database = form.d
> >                         qDelete.sql = [DELETE FROM CASHIER_TEMP WHERE userID = :userID]
> >                         qDelete.params["userID"] = _app.UserID  // or what ever user ID it is
> >                         qDelete.requery()
> >  
> >    // clear grid of updated transactions
> >                         form.setGrid()
> >  
> >                         form.checkBatchTotal()
> >         
> >                     form.entquantity.value = 0
> >                         form.buyprice.value = 0.00
> >           form.entamount.value = 0.00
> >                         form.cmbaccount.value = ""
> >                         form.container1.entaccountcode.value = ""
> >                         form.stockno.value = ""
> >                         form.entsubcode.value = 0.00
> >                         form.container1.cash.value = 0.00
> >                         form.container1.pos.value = 0.00
> >                         form.custno.value = ""
> >                         form.stockbalance.value = ""
> >                         form.customername.value = ""
> >                         form.container1.discountamt.value = 0.00
> >                         form.container1.netamt.value = 0.00
> >                         form.stockno.enabled = true
> >                         form.btnSave.enabled = true
> >           form.btnPost.enabled = true
> >                         form.stockno.setfocus()
> >                         do reprintreceipt.wfm
> >                         
> >                         
> >          return
>
> Lots of code to analyse.
> The thing that strikes me in what does "do reprintreceipt.wfm" do.
> If you want to print a report then simply execute the .rep file.
>
> I use the following to print invoices at click of a button. You caan add
> similar code at the end of your onClick event.
>
> r = new p_salesreport()
> r.salesdatamodule1.sales.params["invoice"].value = str(form.minvoice,10,0)
> r.salesdatamodule1.sales.params["location"].value = form.mlocat
> r.salesdatamodule1.sales.requery()
> r.title = "invoice no. "+str(form.minvoice,10,0)
> r.render()
> return
>
>
> Regards
> Akshat