| Subject |
Re: Print receipt on pos |
| From |
Akshat Kapoor <akshat.kapoor@kapoorsons.in> |
| Date |
Wed, 31 Aug 2022 18:36:38 +0530 |
| Newsgroups |
dbase.getting-started |
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
|
|