sno1=thisform.text1.value date1=thisform.text2.value code1=thisform.text4.value partyname=thisform.text5.value *--- delete current invoice if found select sales delete all for sno=thisform.text1.value in sales tableupdate(.t.,.t.,'sales') *--- get NEW sno (refresh sno if some one has saved invoices greater than text1.value) maxsno=0 calculate max(sno) for !deleted() to maxsno thisform.text1.value=maxsno+1 Begin transaction *---prepare credit entry select temp repl all credit with round(credit,0),type with [P],detail with thisform.text3.value,; sno with thisform.text1.value,dates with date1, code2 with code1,; credit with round(credit,0),edmode with .t. for !empty(codes) update temp set names =products.names from products where temp.codes=products.codes select sales append from dbf("temp") for !empty(codes) and !deleted() result=tableupdate(.t.,.t.,'sales') *---error trapping routine if !result = aerror(laerror) tablerevert( .t., "sales" ) = messagebox('Error #' + ltrim(str(laerror[1])) + ': ' + laerror[2] + ; ' occurred while saving.') endif result *---prepare debit entry select temp repl all code2 with codes, codes with code1,names with partyname,detail with thisform.text3.value,; sno with thisform.text1.value,debit with round(credit,0),; credit with 0 type with "" ,edmode with .t. for !empty(codes) select sales append from dbf("temp") for !empty(codes) and !deleted() result=tableupdate(.t.,.t.,'sales') *---error trapping routine if !result = aerror(laerror) tablerevert( .t., "sales" ) = messagebox('Error #' + ltrim(str(laerror[1])) + ': ' + laerror[2] + ; ' occurred while saving.') endif result end transaction flush in sales force