def calcOwnDocTotal(id): import gnue.common.GConditions as GConditions import hack ownDocumentResultSet = ownDocumentTotalDataSource.createResultSet({"own_document.id":str(id)}) more = ownDocumentResultSet.firstRecord() if not more: return [0,0] itemTotal = 0 taxItemTotal = 0 currOwnDoc = ownDocumentResultSet.current.getField("own_document.id") while ownDocumentResultSet.current.getField("own_document.id") == currOwnDoc and more: lQty = hack.a2f(ownDocumentResultSet.current.getField("own_product_item.qty")) lUnitPrice = hack.a2f(ownDocumentResultSet.current.getField("own_product_item.unit_price")) lBonus = hack.a2f(ownDocumentResultSet.current.getField("own_item.bonus")) lDiscount = hack.a2f(ownDocumentResultSet.current.getField("own_item.discount")) item = lQty * lUnitPrice - lBonus - lDiscount #print "qty %d * unit_price %d - bonus %d - discount %d = %d " % (lQty, lUnitPrice, lBonus, lDiscount, lQty * lUnitPrice - lBonus - lDiscount) itemTax = 0 currItem = ownDocumentResultSet.current.getField("own_item.id") while ownDocumentResultSet.current.getField("own_item.id") == currItem and more: itemTax += hack.a2f(ownDocumentResultSet.current.getField("own_item_tax.amount")) more = ownDocumentResultSet.nextRecord() itemTotal += item taxItemTotal += itemTax return [itemTotal,taxItemTotal] def calcAlienDocTotal(id): import gnue.common.GConditions as GConditions import hack alienDocumentResultSet = alienDocumentTotalDataSource.createResultSet({"alien_document.id":str(id)}) more = alienDocumentResultSet.firstRecord() if not more: return [0,0] itemTotal = 0 taxItemTotal = 0 currAlienDoc = alienDocumentResultSet.current.getField("alien_document.id") while alienDocumentResultSet.current.getField("alien_document.id") == currAlienDoc and more: lQty = hack.a2f(alienDocumentResultSet.current.getField("alien_product_item.qty")) lUnitPrice = hack.a2f(alienDocumentResultSet.current.getField("alien_product_item.unit_price")) lBonus = hack.a2f(alienDocumentResultSet.current.getField("alien_item.bonus")) lDiscount = hack.a2f(alienDocumentResultSet.current.getField("alien_item.discount")) item = lQty * lUnitPrice - lBonus - lDiscount #print "qty %d * unit_price %d - bonus %d - discount %d = %d " % (lQty, lUnitPrice, lBonus, lDiscount, lQty * lUnitPrice - lBonus - lDiscount) itemTax = 0 currItem = alienDocumentResultSet.current.getField("alien_item.id") while alienDocumentResultSet.current.getField("alien_item.id") == currItem and more: itemTax += hack.a2f(alienDocumentResultSet.current.getField("alien_item_tax.amount")) more = alienDocumentResultSet.nextRecord() itemTotal += item taxItemTotal += itemTax return [itemTotal,taxItemTotal] import hack lRecordCount = ownDocumentAuxBlock.getRecordCount() for recNum in range(lRecordCount): ownDocumentAuxBlock.jumpRecord(recNum) print ownDocumentAuxBlock.idEntry res = calcOwnDocTotal(str(ownDocumentAuxBlock.idEntry)) print res ownDocumentAuxBlock.netTotalEntry = hack.a2f(res[0]) ownDocumentAuxBlock.taxTotalEntry = hack.a2f(res[1]) from gnue.common.GDataObjects import ConnectionError as DBError try: ownDocumentAuxBlock.postChanges() commitConnection() except DBError, err: rollbackConnection() clear() genericBox("Hay problemas para grabar los totales de los documentos de la empresa\n"+str(err),['Aceptar']) except: rollbackConnection() clear() lRecordCount = alienDocumentAuxBlock.getRecordCount() for recNum in range(lRecordCount): alienDocumentAuxBlock.jumpRecord(recNum) print alienDocumentAuxBlock.idEntry res = calcAlienDocTotal(str(alienDocumentAuxBlock.idEntry)) print res alienDocumentAuxBlock.netTotalEntry = hack.a2f(res[0]) alienDocumentAuxBlock.taxTotalEntry = hack.a2f(res[1]) from gnue.common.GDataObjects import ConnectionError as DBError try: alienDocumentAuxBlock.postChanges() commitConnection() except DBError, err: rollbackConnection() clear() genericBox("Hay problemas para grabar los totales de los documentos de la empresa\n"+str(err),['Aceptar']) except: rollbackConnection() clear() exit()