$debitA => '' $debitB => '' $debitC => '' $creditA => '' $creditB => '' $creditC => '' $applied_doc => '' $applied_name => '' $entity_type => '' $entity_table => '' $entity_name => '' $doc_ownership => '' $doc_alien_entity => '' codeToSearch = str(ownDocumentBlock.clientRecipientBox.clientCodeEntry) nameToSearch = str(ownDocumentBlock.clientRecipientBox.clientNameEntry) ownDocumentBlock.clientRecipientBox.clientCodeEntry = codeToSearch ownDocumentBlock.clientRecipientBox.clientNameEntry = nameToSearch callTrigger('startWaitingModeTrigger') clientResultBlock.initQuery() clientResultBlock.uidEntry = codeToSearch+"%" clientResultBlock.nameEntry = nameToSearch+"%" clientResultBlock.processQuery() callTrigger('endWaitingModeTrigger') recordCount = clientResultBlock.getRecordCount() if recordCount > 1: def callback (returnValue): global block if returnValue >= 0: clientResultBlock.jumpRecord(returnValue) ownDocumentBlock.clientRecipientBox.clientCodeEntry = str(clientResultBlock.uidEntry) ownDocumentBlock.clientRecipientBox.clientNameEntry = str(clientResultBlock.nameEntry) ownDocumentBlock.clientRecipientBox.clientEntry = str(clientResultBlock.idEntry) runForm ('clientSelect.gfd', {'data': clientResultBlock, 'callback': callback}) elif recordCount == 1: clientResultBlock.jumpRecord(0) ownDocumentBlock.clientRecipientBox.clientCodeEntry = str(clientResultBlock.uidEntry) ownDocumentBlock.clientRecipientBox.clientNameEntry = str(clientResultBlock.nameEntry) ownDocumentBlock.clientRecipientBox.clientEntry = str(clientResultBlock.idEntry) documentSign={'$debitA':1, '$debitB':1, '$debitC':1,'$creditA':-1, '$creditB':-1, '$creditC':-1} import gnue.common.GConditions as GConditions import hack import printing ##########configuracion de la impresion import mx.DateTime import time, sys sys.path.append("../ruff") import informe x = informe.new("ctacteMovement.xml") x.page_header(fecha=str(mx.DateTime.now().strftime("%Y-%m-%d"))) x.page_header(entity_label="$entity_name") x.page_header(entity_name=str(ownDocumentBlock.clientRecipientBox.clientNameEntry)) x.page_header(entity_code=str(ownDocumentBlock.clientRecipientBox.clientCodeEntry)) ########## condProductInvoice = GConditions.GCondition() condPay = GConditions.GCondition() eq = GConditions.GCeq(condProductInvoice) GConditions.GCField(eq,"_entity_data._table") GConditions.GCConst(eq,str(ownDocumentBlock.clientRecipientBox.clientEntry)) #eq = GConditions.GCeq(condPay) #GConditions.GCField(eq,"_entity_data._table") #GConditions.GCConst(eq,str(client)) productInvoiceResultSet = productInvoiceDataSource.createResultSet(condProductInvoice) more = productInvoiceResultSet.firstRecord() balance = 0.00 partialBalance = 0.00 while more: partialBalance = 0.00 docType=str(productInvoiceResultSet.current.getField("$doc_ownership_document.$doc_ownership_document_type")).strip() invoiceTotal = 0 currOwnDoc = productInvoiceResultSet.current.getField("$doc_ownership_document.id") #calculo el total del documento documentTotal = hack.a2f(productInvoiceResultSet.current.getField("$doc_ownership_document.tax_total")) + hack.a2f(productInvoiceResultSet.current.getField("$doc_ownership_document.net_total")) #busco lo pagado del documento condPay = GConditions.GCondition() eqPay = GConditions.GCeq(condPay) GConditions.GCField(eqPay,"$doc_ownership_document_proceeding.$doc_ownership_document") GConditions.GCConst(eqPay,str(currOwnDoc)) cancelledDocumentResultSet = cancelledDocumentDataSource.createResultSet(condPay) #me fijo si esta cancelado el documento cancelledMore= cancelledDocumentResultSet.firstRecord() cancelledAmount = 0.00 applied = 0 while cancelledMore: cancelledAmount += hack.a2f(cancelledDocumentResultSet.current.getField("$doc_ownership_document_proceeding.amount")) cancelledMore = cancelledDocumentResultSet.nextRecord() #/ cash = 0.00 #busco si es un pago de contado cancelledMore= cancelledDocumentResultSet.firstRecord() if cancelledMore and(str(cancelledDocumentResultSet.current.getField("receipt.own_document_type")) != "$applied_doc"): cash = hack.a2f(cancelledDocumentResultSet.current.getField("$doc_ownership_document_proceeding.amount"),2) cancelledMore = cancelledDocumentResultSet.nextRecord() #inserto la linea de comprobante #me fijo si es deudor o acreedor if documentSign[docType] == 1: debit= documentTotal credit= cash else: debit= cash credit= documentTotal if ($doc_ownership eq "own") { pos = str(productInvoiceResultSet.current.getField("_own_pos_data.number")) number= str(productInvoiceResultSet.current.getField("own_document.number")).strip().rjust(8).replace(' ','0') completeNumber = printing.printField(pos + "-" + number ,13) } else { completeNumber = str(productInvoiceResultSet.current.getField("alien_document.number")) } #calculo el saldo parcial y total balance += debit - credit partialBalance += debit - credit #/calculo el saldo parcial y total #clasificación if cancelledAmount >= documentTotal: applicationType="applied" else: applicationType="partial" #linea a imprimir if applicationType == "applied": printBalance = partialBalance else: printBalance = balance comprobante = { "fecha": printing.printField(productInvoiceResultSet.current.getField("$doc_ownership_document.date"),10), "tipo": printing.printField(productInvoiceResultSet.current.getField("_document_type_data.code"),3)+" ", "numero": completeNumber, "debe": printing.printAccount(debit,11), "haber": printing.printAccount(credit,11), "saldo_parcial": printing.printAccount(partialBalance,11), "saldo": printing.printAccount(printBalance,11), } print comprobante eval('x.'+applicationType+'.applied_item.add_row(**comprobante)') # = documentTotal while cancelledMore : proceedingAmount = hack.a2f(cancelledDocumentResultSet.current.getField("$doc_ownership_document_proceeding.amount"),2) #cancelledAmount += proceedingAmount #inserto la linea de recibo if documentSign[docType] == 1: debit= 0.00 credit= proceedingAmount else: debit= proceedingAmount credit= 0.00 #calculo el saldo parcial y total balance += debit - credit partialBalance += debit - credit #/calculo el saldo parcial y total number = str(cancelledDocumentResultSet.current.getField("receipt.number")).strip().rjust(8).replace(' ','0') completeNumber = printing.printField(" " + number ,13) #linea a imprimir if applicationType == "applied": printBalance = partialBalance else: printBalance = balance comprobante = { "fecha": printing.printField(cancelledDocumentResultSet.current.getField("receipt.date"),10), "tipo": 'À$applied_name', "numero": completeNumber, "debe": printing.printAccount(debit,11), "haber": printing.printAccount(credit,11), "saldo_parcial": printing.printAccount(partialBalance,11), "saldo": printing.printAccount(printBalance,11), } print comprobante eval('x.'+applicationType+'.applied_item.add_row(**comprobante)') cancelledMore = cancelledDocumentResultSet.nextRecord() more = productInvoiceResultSet.nextRecord() ##########configuracion de la impresion printing.previewPrint([x.render()],'xless -fn vga') documentSign={'$debitA':1, '$debitB':1, '$debitC':1,'$creditA':-1, '$creditB':-1, '$creditC':-1} import gnue.common.GConditions as GConditions import hack import printing import mx.DateTime ##########configuracion de la impresion import time, sys sys.path.append("../ruff") import informe x = informe.new("ctacteMovement.xml") x.page_header(entity_label="$entity_name") x.page_header(fecha=str(mx.DateTime.now().strftime("%Y-%m-%d"))) x.page_header(entity_name=str(ownDocumentBlock.clientRecipientBox.clientNameEntry)) x.page_header(entity_code=str(ownDocumentBlock.clientRecipientBox.clientCodeEntry)) ########## condProductInvoice = GConditions.GCondition() #condPay = GConditions.GCondition() eq = GConditions.GCeq(condProductInvoice) GConditions.GCField(eq,"_entity_data._table") GConditions.GCConst(eq,str(ownDocumentBlock.clientRecipientBox.clientEntry)) productInvoiceResultSet = productInvoiceDataSource.createResultSet(condProductInvoice) #eq = GConditions.GCeq(condPay) #GConditions.GCField(eq,"_entity_data._table") #GConditions.GCConst(eq,str(client)) # condiciones para busqueda de recibos condReceipt = GConditions.GCondition() eqReceipt = GConditions.GCeq(condReceipt) GConditions.GCField(eqReceipt,"_entity_data._table") GConditions.GCConst(eqReceipt,str(ownDocumentBlock.clientRecipientBox.clientEntry)) receiptResultSet = receiptDataSource.createResultSet(condReceipt) #/condiciones para busqueda de recibos moreInvoice = productInvoiceResultSet.firstRecord() moreReceipt = receiptResultSet.firstRecord() balance = 0.00 while moreInvoice or moreReceipt: #conditions printInvoice = 0 if (moreInvoice and moreReceipt): if receiptResultSet.current.getField("own_document.date") > productInvoiceResultSet.current.getField("$doc_ownership_document.date"): printInvoice=1 elif moreInvoice: printInvoice=1 #/conditions if printInvoice: docType=str(productInvoiceResultSet.current.getField("$doc_ownership_document.$doc_ownership_document_type")).strip() invoiceTotal = 0 currOwnDoc = productInvoiceResultSet.current.getField("$doc_ownership_document.id") #calculo el total del documento documentTotal = hack.a2f(productInvoiceResultSet.current.getField("$doc_ownership_document.tax_total")) + hack.a2f(productInvoiceResultSet.current.getField("$doc_ownership_document.net_total")) #busco lo pagado del documento condPay = GConditions.GCondition() eqPay = GConditions.GCeq(condPay) GConditions.GCField(eqPay,"$doc_ownership_document_proceeding.$doc_ownership_document") GConditions.GCConst(eqPay,str(currOwnDoc)) cancelledDocumentResultSet = cancelledDocumentDataSource.createResultSet(condPay) cancelledMore= cancelledDocumentResultSet.firstRecord() cash = 0.00 #busco si es un pago de contado proceedingId = 0 if cancelledMore and(str(cancelledDocumentResultSet.current.getField("receipt.own_document_type")) != "$applied_doc"): cash = hack.a2f(cancelledDocumentResultSet.current.getField("$doc_ownership_document_proceeding.amount"),2) proceedingId = cancelledDocumentResultSet.current.getField("$doc_ownership_document_proceeding.proceeding") cancelledMore = cancelledDocumentResultSet.nextRecord() if ($doc_ownership eq "own") { #me fijo si hay retenciones condRetention = GConditions.GCondition() eqRet = GConditions.GCeq(condRetention) GConditions.GCField(eqRet,"alien_document_proceeding.proceeding") GConditions.GCConst(eqRet,proceedingId) retentionResultSet = retentionDataSource.createResultSet(condRetention) #sumatoria de lo retenido retentionMore= retentionResultSet.firstRecord() while retentionMore: #print "retencion",retentionResultSet.current.getField("alien_document.id") cash -= hack.a2f(retentionResultSet.current.getField("alien_document.net_total")) retentionMore= retentionResultSet.nextRecord() #inserto la linea de comprobante } #me fijo si es deudor o acreedor if documentSign[docType] == 1: debit= documentTotal credit= cash else: debit= cash credit= documentTotal if ($doc_ownership eq "own") { pos = str(productInvoiceResultSet.current.getField("_own_pos_data.number")) number= str(productInvoiceResultSet.current.getField("own_document.number")).strip().rjust(8).replace(' ','0') completeNumber = printing.printField(pos + "-" + number ,13) } else { completeNumber = str(productInvoiceResultSet.current.getField("alien_document.number")) } #calculo el saldo parcial y total balance += debit - credit #/calculo el saldo parcial y total #linea a imprimir comprobante = { "fecha": printing.printField(productInvoiceResultSet.current.getField("$doc_ownership_document.date"),10), "tipo": printing.printField(productInvoiceResultSet.current.getField("_document_type_data.code"),3)+" ", "numero": completeNumber, "debe": printing.printAccount(debit,11), "haber": printing.printAccount(credit,11), "saldo": printing.printAccount(balance,11), } #print comprobante #agrego linea a historico x.historic.historic_item.add_row(**comprobante) #recorro las retenciones if ($doc_ownership eq "own") { retentionMore= retentionResultSet.firstRecord() while retentionMore: debit = 0 credit = hack.a2f(retentionResultSet.current.getField("alien_document.net_total")) number = str(retentionResultSet.current.getField("alien_document.number")).strip().rjust(8).replace(' ','0') completeNumber = printing.printField(" " + number ,13) retentionMore= retentionResultSet.nextRecord() #imprimo balance += debit - credit comprobante = { "fecha": printing.printField(retentionResultSet.current.getField("alien_document.date"),10), "tipo":"À"+printing.printField(retentionResultSet.current.getField("_document_type_data.code"),3), "numero": completeNumber, "debe": printing.printAccount(debit,11), "haber": printing.printAccount(credit,11), "saldo": printing.printAccount(balance,11), } #print comprobante x.historic.historic_item.add_row(**comprobante) } # = documentTotal moreInvoice = productInvoiceResultSet.nextRecord() #muestro los recibos #elif moreReceipt else: #recibos proceedingId = receiptResultSet.current.getField("own_document_proceeding.proceeding") if ($doc_ownership eq "own") { debit = 0.00 credit = hack.a2f(receiptResultSet.current.getField("own_document.net_total")) } else { credit = 0.00 debit = hack.a2f(receiptResultSet.current.getField("own_document.net_total")) } number= str(receiptResultSet.current.getField("own_document.number")).strip().rjust(8).replace(' ','0') completeNumber = printing.printField( " " + number ,13) #busco las retenciones if ($doc_ownership eq "own") { condRetention = GConditions.GCondition() eqRet = GConditions.GCeq(condRetention) GConditions.GCField(eqRet,"alien_document_proceeding.proceeding") GConditions.GCConst(eqRet,proceedingId) retentionResultSet = retentionDataSource.createResultSet(condRetention) #sumatoria de lo retenido retentionMore= retentionResultSet.firstRecord() while retentionMore: #print "retencion",retentionResultSet.current.getField("alien_document.id") credit -= hack.a2f(retentionResultSet.current.getField("alien_document.net_total")) retentionMore= retentionResultSet.nextRecord() } #impresión balance += debit - credit comprobante = { "fecha": printing.printField(receiptResultSet.current.getField("own_document.date"),10), "tipo": printing.printField(receiptResultSet.current.getField("_document_type_data.code"),3)+" ", "numero": completeNumber, "debe": printing.printAccount(debit,11), "haber": printing.printAccount(credit,11), "saldo": printing.printAccount(balance,11), } #print comprobante x.historic.historic_item.add_row(**comprobante) #recorro las retenciones del recibo if ($doc_ownership eq "own") { retentionMore= retentionResultSet.firstRecord() while retentionMore: #print "retencion",retentionResultSet.current.getField("alien_document.id") debit = 0 credit = hack.a2f(retentionResultSet.current.getField("alien_document.net_total")) number = str(retentionResultSet.current.getField("alien_document.number")).strip().rjust(8).replace(' ','0') completeNumber = printing.printField(" " + number ,13) retentionMore= retentionResultSet.nextRecord() #imprimo balance += debit - credit comprobante = { "fecha": printing.printField(retentionResultSet.current.getField("alien_document.date"),10), "tipo": 'À'+printing.printField(retentionResultSet.current.getField("_document_type_data.code"),3), "numero": completeNumber, "debe": printing.printAccount(debit,11), "haber": printing.printAccount(credit,11), "saldo": printing.printAccount(balance,11), } #print comprobante x.historic.historic_item.add_row(**comprobante) } moreReceipt = receiptResultSet.nextRecord() ##########configuracion de la impresion #x.applied.empty() printing.previewPrint([x.render()],'xless -fn vga')