$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')