$document_name => '' $document_type_A => '' $document_type_B => '' $document_type_C => '' $stock_alta => '' $stock_borrado => '' $document_type_A $document_type_B $document_type_C tmpValuesDataSource.discountPercent = 0 ownOrganizationBlock.clear() ownOrganizationBlock.initQuery() ownOrganizationBlock.processQuery() tmpValuesDataSource.ownIVACond = str(ownOrganizationBlock.condIVAEntry) print "ownIVACond",tmpValuesDataSource.ownIVACond #cargo el own-pos entity id callTrigger('searchOwnPosData') #/cargo el own-pos entity id invoiceType = str(alienDocumentBlock.invoiceTypeEntry).strip().lower() if invoiceType == 'a': alienDocumentBlock.typeEntry = '"'.$document_type_A.'"' elif invoiceType == 'b': alienDocumentBlock.typeEntry = '"'.$document_type_B.'"' elif invoiceType == 'c': alienDocumentBlock.typeEntry = '"'.$document_type_C.'"' else: alienDocumentBlock.typeEntry = '' = 0.5 from gnue.common.events.Event import Event as GFEvent # busy clock self._object.dispatchEvent(GFEvent('beginWAIT')) ]]> = 0.5 from gnue.common.events.Event import Event as GFEvent self._object.dispatchEvent(GFEvent('endWAIT')) setStatusText("Listo") ]]> alienDocumentBlock.dateEntry = alienDocumentDataSource.getTimeStamp() if not alienDocumentBlock.getCurrentRecord().isInserted(): genericBox("No se puede grabar modificaciones",["Aceptar"]) elif not str(alienDocumentBlock.numberEntry): genericBox("Falta el número del comprobante",["Aceptar"]) elif not str(alienDocumentBlock.dateEntry): genericBox("Falta la fecha del comprobante",["Aceptar"]) elif not str(alienDocumentBlock.invoiceTypeEntry): genericBox("Falta el tipo del comprobante",["Aceptar"]) else: from gnue.common.GDataObjects import ConnectionError as DBError try: import hack alienIvaTaxBlock.alienIvaTaxAmountEntry = hack.a2f(alienDocumentBlock.ivaTotalEntry,2) alienIvaTaxBlock.alienIvaTaxedAmountEntry = hack.a2f(alienDocumentBlock.netTotalEntry,2) postChangeAdvance = 0 alienDocumentBlock.ownEntityIdEntry = str(ownPosBlock.ownPosEntityIdEntry) alienDocumentBlock.postChanges() postChangeAdvance = 1 proceedingBlock.clear() proceedingBlock.dateEntry = proceedingDataSource.getTimeStamp() proceedingBlock.postChanges() postChangeAdvance = 2 #cargo el own-pos entity id alienDocumentProceedingBlock.clear() alienDocumentProceedingBlock.proceedingEntry = str(proceedingBlock.idEntry) alienDocumentProceedingBlock.alienDocumentEntry = str(alienDocumentBlock.idEntry) alienDocumentProceedingBlock.amountEntry = str(payBlock.cashEntry) alienDocumentProceedingBlock.postChanges() postChangeAdvance = 3 rc = currencyMovementBlock.getRecordCount() for recNum in range(rc): currencyMovementBlock.jumpRecord(recNum) currencyMovementBlock.proceedingEntry = str(proceedingBlock.idEntry) currencyMovementBlock.movementTypeEntry = "" # Revisar com queda esto currencyMovementBlock.postChanges() postChangeAdvance = 4 tmpValuesDataSource.idEntry = str(alienDocumentBlock.idEntry) callTrigger('$stock_alta') commitConnection() callTrigger('rollbackTrigger') except DBError, err: rollbackConnection() message = "Hay problemas para grabar " if postChangeAdvance == 0: message += "el Comprobante" elif postChangeAdvance == 1: message += "el procedimiento General" elif postChangeAdvance == 2: message += "el procedimiento del Comprobante" elif postChangeAdvance == 3: message += "las monedas de pago del Comprobante" elif postChangeAdvance == 4: message += "el stock" genericBox(message+"\n"+str(err),['Aceptar']) #else: # alienDocumentBlock.clear() tmpValuesDataSource.discountPercent = 0 clear() callTrigger('searchOwnPosData') #alienDocumentBlock.newRecord() tmpValuesDataSource.discountPercent = 0 if genericBox("¿ Está seguro que desea borrar ?",['Sí','No']) == 1: from gnue.common.GDataObjects import ConnectionError as DBError try: lAlienDocId = str(alienDocumentShowBlock.idEntry) alienDocumentProceedingShowBlock.initQuery() alienDocumentProceedingShowBlock.alienDocumentEntry = lAlienDocId alienDocumentProceedingShowBlock.processQuery() proceedingId = str(alienDocumentProceedingShowBlock.proceedingEntry) alienDocumentProceedingShowBlock.deleteRecord() postChangeAdvance = 0 alienDocumentProceedingShowBlock.postChanges() currencyMovementBlock.proceedingEntry = proceedingId currencyMovementBlock.processQuery() postChangeAdvance = 1 rc = currencyMovementBlock.getRecordCount() for recNum in range(rc): currencyMovementBlock.jumpRecord(recNum) currencyMovementBlock.deleteRecord() currencyMovementBlock.postChanges() tmpValuesDataSource.idEntry = str(alienDocumentShowBlock.idEntry) callTrigger('$stock_alta') lRecordCount = alienItemShowBlock.getRecordCount() for recNum in range(lRecordCount): alienItemShowBlock.jumpRecord(recNum) alienItemTaxShowBlock.initQuery() alienItemTaxShowBlock.alienItemEntry = str(alienItemShowBlock.idEntry) alienItemTaxShowBlock.processQuery() lTaxRecordCount = alienItemTaxShowBlock.getRecordCount() for taxRecNum in range(lTaxRecordCount): alienItemTaxShowBlock.jumpRecord(taxRecNum) alienItemTaxShowBlock.deleteRecord() alienItemTaxShowBlock.postChanges() alienItemDeleteBlock.initQuery() alienItemDeleteBlock.idEntry = str(alienItemShowBlock.idEntry) alienItemDeleteBlock.processQuery() alienItemDeleteBlock.deleteRecord() alienItemDeleteBlock.postChanges() alienItemShowBlock.clear() postChangeAdvance = 4 alienDocumentTaxShowBlock.initQuery() # ese "%" es mono con escopeta !!!!!!!!! #alienDocumentTaxShowBlock.alienDocumentEntry = tmpValuesDataSource.idEntry+"%" alienDocumentTaxShowBlock.alienDocumentEntry = tmpValuesDataSource.idEntry alienDocumentTaxShowBlock.processQuery() lRecordCount = alienDocumentTaxShowBlock.getRecordCount() for recNum in range(lRecordCount): alienDocumentTaxShowBlock.jumpRecord(recNum) alienDocumentTaxShowBlock.deleteRecord() alienDocumentTaxShowBlock.postChanges() postChangeAdvance = 5 alienDocumentShowBlock.deleteRecord() alienDocumentShowBlock.postChanges() commitConnection() except DBError, err: rollbackConnection() callTrigger('rollbackTrigger') message = ["el procedimiento del comprobante", "Los Montos del comprobante", "el stock","los Items del comprobante","los impuestos del comprobante","el Comprobante"] genericBox("Hay problemas para borrar "+message[postChangeAdvance]+"\n"+str(err),['Aceptar']) totalShowBlock.clear() alienDocumentBlock.clear() self.exit() if resultBlock.getRecordCount() > 0 and not resultBlock.getCurrentRecord().isEmpty(): typeInvoice = int(str(alienDocumentShowBlock.typeEntry)) result = "" if typeInvoice == $document_type_A : result = "A" elif typeInvoice == $document_type_B : result = "B" elif typeInvoice == $document_type_C : result = "C" alienDocumentShowBlock.invoiceTypeEntry = result if resultBlock.getRecordCount() > 0 and not resultBlock.getCurrentRecord().isEmpty(): import hack recordCount = alienItemShowBlock.getRecordCount() alienItemShowBlock.firstRecord() for index in range(recordCount): alienItemShowBlock.jumpRecord(index) try: alienItemShowBlock.taxPercentEntry = hack.a2f(alienItemShowBlock.taxAmountEntry,2) / \ hack.a2f(alienItemShowBlock.unitPriceEntry,2) / \ hack.a2f(alienItemShowBlock.qtyEntry,2) * 100 except: pass alienItemShowBlock.firstRecord() #sumo otros impuestos dTTax = 0.0 lRecords = alienOtherTaxShowDataSource.getRecords() for index in range(len(lRecords)): lRecord = lRecords[index] dTTax += hack.a2f(lRecord.getField("alien_document_tax.amount"),4) otherTaxShowTotalBlock.otherTaxTotalEntry = dTTax totalShowBlock.totalEntry = hack.a2f(totalShowBlock.netoEntry,2) + \ hack.a2f(ivaTotalShowBlock.ivaEntry,2)+hack.a2f(otherTaxShowTotalBlock.otherTaxTotalEntry,2) else: totalShowBlock.clear() import hack lQty = hack.a2f(alienItemBlock.qtyEntry,4) lBonus = hack.a2f(alienItemBlock.bonusEntry,4) lDiscount = hack.a2f(alienItemBlock.discountEntry,4) lUnitPrice = hack.a2f(alienItemBlock.unitPriceEntry,4) lItemPrice = round(((lQty * lUnitPrice) - lBonus - lDiscount) * (1 - hack.a2f(alienDocumentBlock.discountPercentEntry,4)/100),2) alienItemBlock.itemNetoEntry = lItemPrice alienItemBlock.taxAmountEntry = round((lItemPrice * hack.a2f(alienItemBlock.taxPercentEntry,2)/100),2) alienItemBlock.itemTotalEntry = round(lItemPrice + hack.a2f(alienItemBlock.taxAmountEntry,2),2) lTNeto = 0 lTExemptNeto = 0 lTTax = 0 sum = 0 lRecords = alienItemDataSource.getRecords() for index in range(len(lRecords)): lRecord = lRecords[index] lQty = hack.a2f(lRecord.getField("alien_product_item.qty"),4) lBonus = hack.a2f(lRecord.getField("alien_item.bonus"),4) lDiscount = hack.a2f(lRecord.getField("alien_item.discount"),4) lUnitPrice = hack.a2f(lRecord.getField("alien_product_item.unit_price"),4) #lTax = hack.a2f(lRecord.getField("alien_item_tax.amount")) lItemPrice = round(((lQty * lUnitPrice) - lBonus - lDiscount) * \ (1 - hack.a2f(alienDocumentBlock.discountPercentEntry,4)/100),2) alienItemBlock.jumpRecord(index) alienItemBlock.itemNetoEntry = lItemPrice alienItemBlock.taxAmountEntry = round((lItemPrice * hack.a2f(alienItemBlock.taxPercentEntry,4)/100),2) alienItemBlock.itemTotalEntry = round(lItemPrice + hack.a2f(alienItemBlock.taxAmountEntry,2),2) lTTax += hack.a2f(lRecord.getField("alien_item_tax.amount"),2) if hack.a2f(lRecord.getField("alien_item_tax.amount"),2) == 0.00: lTExemptNeto += round(lItemPrice,2) else: lTNeto += round(lItemPrice,2) #sum += lQty * lUnitPrice + lTax - lBonus - lDiscount # SUMATORIA DE OTROS IMPUESTOS dTTax = 0.0 lRecords = documentTaxesDataSource.getRecords() for index in range(len(lRecords)): lRecord = lRecords[index] dTTax += hack.a2f(lRecord.getField("alien_document_tax.amount"),4) # /SUMATORIA DE OTROS IMPUESTOS alienDocumentBlock.exemptNetTotalEntry = round(lTExemptNeto,2) alienDocumentBlock.netTotalEntry = round(lTNeto,2) alienDocumentBlock.ivaTotalEntry = lTTax # OTROS IMPUESTOS #alienDocumentBlock.taxTotalEntry = lTTax+hack.a2f(otherTaxBlock.otherTaxAmountEntry,2) #alienDocumentBlock.totalEntry = round(lTNeto+lTTax+hack.a2f(otherTaxBlock.otherTaxAmountEntry,2),2) #las reemplazo por alienDocumentBlock.taxTotalEntry = lTTax+dTTax alienDocumentBlock.totalEntry = round(lTNeto+lTTax+dTTax,2) payBlock.cashEntry = hack.a2f(alienDocumentBlock.totalEntry,2) #totalBlock.totalEntry = str(sum) #payBlock.cashEntry = str(sum) payBlock.ctaCteEntry = "0.00" alienDocumentSearchBlock.clear() resultBlock.clear() resultBlock.initQuery() #resultBlock.typeREntry = "2" resultBlock.providerREntry = str(alienDocumentSearchBlock.providerSEntry) resultBlock.transportREntry = str(alienDocumentSearchBlock.transportSEntry) #resultBlock.salesPersonREntry = str(alienDocumentSearchBlock.salesPersonSEntry) #resultBlock.receivedREntry = str(alienDocumentSearchBlock.receivedSEntry) resultBlock.numberREntry = str(alienDocumentSearchBlock.numberSEntry)+"%" resultBlock.dateREntry = str(alienDocumentSearchBlock.dateSEntry) resultBlock.guideNumerREntry = str(alienDocumentSearchBlock.guideNumerSEntry) resultBlock.bundlesREntry = str(alienDocumentSearchBlock.bundlesSEntry) resultBlock.processQuery() genericBox("No implementado",["Aceptar"]) currentSearchIdBlock.searchId = "1" callTrigger('providerSearchTrigger') currentSearchIdBlock.searchId = "2" callTrigger('providerSearchTrigger') if str(currentSearchIdBlock.searchId) == "1": codeToSearch = str(alienDocumentSearchBlock.providerCodeSEntry) nameToSearch = str(alienDocumentSearchBlock.providerNameSEntry) else: codeToSearch = str(alienDocumentBlock.providerCodeSEntry) nameToSearch = str(alienDocumentBlock.providerNameSEntry) callTrigger('startWaitingModeTrigger') providerResultBlock.reset() providerResultBlock.initQuery() if codeToSearch: providerResultBlock.providerCodeEntry = codeToSearch+"%" if nameToSearch: providerResultBlock.providerNameEntry = nameToSearch+"%" providerResultBlock.processQuery() callTrigger('endWaitingModeTrigger') recordCount = providerResultBlock.getRecordCount() if recordCount > 1: def callback (returnValue): global block if returnValue >= 0: providerResultBlock.jumpRecord(returnValue) callTrigger('afterProviderSearchTrigger') runForm ('providerSelect.gfd', {'data': providerResultBlock, 'callback': callback}) elif recordCount == 1: providerResultBlock.jumpRecord(0) callTrigger('afterProviderSearchTrigger') if str(currentSearchIdBlock.searchId) == "1": alienDocumentSearchBlock.providerCodeSEntry = str(providerResultBlock.providerCodeEntry) alienDocumentSearchBlock.providerNameSEntry = str(providerResultBlock.providerNameEntry) alienDocumentSearchBlock.providerSEntry = str(providerResultBlock.idEntry) else: import hack alienDocumentBlock.providerCodeSEntry = str(providerResultBlock.providerCodeEntry) alienDocumentBlock.providerNameSEntry = str(providerResultBlock.providerNameEntry) alienDocumentBlock.providerEntry = str(providerResultBlock.idEntry) clientIvaTaxProfile = int(str(tmpValuesDataSource.ownIVACond)) print "client IVA ",clientIvaTaxProfile providerIvaTaxProfile = int(str(providerResultBlock.providerIvaTaxProfileEntry)) print "providerIvaTaxProfile", providerIvaTaxProfile alienDocumentBlock.invoiceTypeEntry = hack.calcInvoiceType(clientIvaTaxProfile, providerIvaTaxProfile) callTrigger('invoiceTypeValidation') currentSearchIdBlock.searchId = "1" callTrigger('transportSearchTrigger') currentSearchIdBlock.searchId = "2" callTrigger('transportSearchTrigger') if str(currentSearchIdBlock.searchId) == "1": codeToSearch = str(alienDocumentSearchBlock.transportCodeSEntry) nameToSearch = str(alienDocumentSearchBlock.transportNameSEntry) else: codeToSearch = str(alienDocumentBlock.transportCodeSEntry) nameToSearch = str(alienDocumentBlock.transportNameSEntry) callTrigger('startWaitingModeTrigger') transportResultBlock.initQuery() transportResultBlock.transportCodeEntry = codeToSearch+"%" transportResultBlock.transportNameEntry = nameToSearch+"%" transportResultBlock.processQuery() callTrigger('endWaitingModeTrigger') recordCount = transportResultBlock.getRecordCount() if recordCount > 1: def callback (returnValue): global block if returnValue >= 0: transportResultBlock.jumpRecord(returnValue) callTrigger('afterTransportSearchTrigger') runForm ('transportSelect.gfd', {'data': transportResultBlock, 'callback': callback}) elif recordCount == 1: transportResultBlock.jumpRecord(0) callTrigger('afterTransportSearchTrigger') if str(currentSearchIdBlock.searchId) == "1": alienDocumentSearchBlock.transportCodeSEntry = str(transportResultBlock.transportCodeEntry) alienDocumentSearchBlock.transportNameSEntry = str(transportResultBlock.transportNameEntry) alienDocumentSearchBlock.transportEntry = str(transportResultBlock.idEntry) else: alienDocumentBlock.transportCodeSEntry = str(transportResultBlock.transportCodeEntry) alienDocumentBlock.transportNameSEntry = str(transportResultBlock.transportNameEntry) alienDocumentBlock.transportEntry = str(transportResultBlock.idEntry) codeToSearch = str(alienItemBlock.productCodeEntry) nameToSearch = str(alienItemBlock.productNameEntry) callTrigger('startWaitingModeTrigger') productResultBlock.initQuery() productResultBlock.prodCodeEntry = codeToSearch+"%" productResultBlock.prodNameEntry = nameToSearch+"%" productResultBlock.processQuery() callTrigger('endWaitingModeTrigger') recordCount = productResultBlock.getRecordCount() if recordCount > 1: def callback (returnValue): global block if returnValue >= 0: productResultBlock.jumpRecord(returnValue) callTrigger('afterProductSearchTrigger') runForm ('productSelect.gfd', {'data': productResultBlock, 'callback': callback}) elif recordCount == 1: productResultBlock.jumpRecord(0) callTrigger('afterProductSearchTrigger') alienItemBlock.productCodeEntry = str(productResultBlock.prodCodeEntry) alienItemBlock.productNameEntry = str(productResultBlock.prodNameEntry) alienItemBlock.productEntry = str(productResultBlock.prodIdEntry) alienItemBlock.taxPercentEntry = str(productResultBlock.prodIVATaxEntry) alienItemBlock.productCodeEntry = "" alienItemBlock.productNameEntry = "" alienItemBlock.qtyEntry = 0.00 alienItemBlock.unitPriceEntry = 0.00 alienItemBlock.productEntry = "0" alienItemBlock.taxAmountEntry = 0 alienItemBlock.taxPercentEntry = 0 alienItemBlock.discountEntry = 0.00 alienItemBlock.itemTotalEntry = 0.00 callTrigger('totalCalcTrigger') import hack alienDocumentShowBlock.clear() if resultBlock.getRecordCount() > 0 and not resultBlock.getCurrentRecord().isEmpty(): alienDocumentShowBlock.initQuery() alienDocumentShowBlock.idEntry = ("%s" % resultBlock.idREntry) alienDocumentShowBlock.processQuery() alienItemShowBlock.initQuery() alienItemShowBlock.alienDocumentEntry = ("%s" % alienDocumentShowBlock.idEntry) alienItemShowBlock.processQuery() recordCount = alienItemShowBlock.getRecordCount() alienItemShowBlock.firstRecord() setParameter('invoiceDate',str(alienDocumentShowBlock.dateEntry)) runForm('provider.gfd') runForm('product.gfd') import hack # SUMATORIA DE OTROS IMPUESTOS dTTax = 0.0 lRecords = documentTaxesDataSource.getRecords() for index in range(len(lRecords)): lRecord = lRecords[index] dTTax += hack.a2f(lRecord.getField("alien_document_tax.amount"),4) # /SUMATORIA DE OTROS IMPUESTOS #alienDocumentBlock.taxTotalEntry = hack.a2f(otherTaxBlock.otherTaxAmountEntry,2)+hack.a2f(alienDocumentBlock.ivaTotalEntry,2) alienDocumentBlock.taxTotalEntry = dTTax+hack.a2f(alienDocumentBlock.ivaTotalEntry,2) alienDocumentBlock.totalEntry = hack.a2f(alienDocumentBlock.netTotalEntry,2) + \ hack.a2f(alienDocumentBlock.taxTotalEntry,2) payBlock.cashEntry = str(hack.a2f(alienDocumentBlock.totalEntry,2)) payBlock.ctaCteEntry = 0.00 import hack if hack.a2f(payBlock.cashEntry,2) != 0.0: tmpAmountBlock.cashAmountEntry = hack.a2f(payBlock.cashEntry,2) tmpAmountBlock.ctaCteAmountEntry = hack.a2f(payBlock.ctaCteEntry,2) currencyMovementBlock.clear() def callback (returnValue): if str(returnValue) == '1': callTrigger('commitTrigger') runForm ('providerMultiCurrency.gfd', {'currency': currencyMovementBlock, 'amount': tmpAmountBlock, 'callback': callback}) else: callTrigger('commitTrigger')