diff --git a/cash_daily_report/wizard/cash_daily_report.py b/cash_daily_report/wizard/cash_daily_report.py index dbe90141e..237dc9fc2 100644 --- a/cash_daily_report/wizard/cash_daily_report.py +++ b/cash_daily_report/wizard/cash_daily_report.py @@ -94,14 +94,25 @@ class CashDailyReportWizard(models.TransientModel): ]) offset = 1 total_account_payment_amount = 0.0 - journals = {} + total_account_payment = 0.0 + total_account_expenses = 0.0 + payment_journals = {} + expense_journals = {} for k_payment, v_payment in enumerate(account_payments): amount = v_payment.amount if v_payment.payment_type == 'inbound' \ else -v_payment.amount - if v_payment.journal_id.name not in journals: - journals.update({v_payment.journal_id.name: amount}) + if amount < 0: + total_account_expenses += -amount + if v_payment.journal_id.name not in expense_journals: + expense_journals.update({v_payment.journal_id.name: -amount}) + else: + expense_journals[v_payment.journal_id.name] += -amount else: - journals[v_payment.journal_id.name] += amount + total_account_payment += amount + if v_payment.journal_id.name not in payment_journals: + payment_journals.update({v_payment.journal_id.name: amount}) + else: + payment_journals[v_payment.journal_id.name] += amount worksheet.write(k_payment+offset, 0, v_payment.name) worksheet.write(k_payment+offset, 1, v_payment.communication) worksheet.write(k_payment+offset, 2, v_payment.partner_id.name) @@ -123,9 +134,9 @@ class CashDailyReportWizard(models.TransientModel): for k_payment, v_payment in enumerate(payment_returns): for k_line, v_line in enumerate(v_payment.line_ids): if v_payment.journal_id.name not in return_journals: - journals.update({v_payment.journal_id.name: v_line.amount}) + return_journals.update({v_payment.journal_id.name: -v_line.amount}) else: - return_journals[v_payment.journal_id.name] += amount + return_journals[v_payment.journal_id.name] += -amount worksheet.write(k_line+offset, 0, v_payment.name) worksheet.write(k_line+offset, 1, v_line.reference) worksheet.write(k_line+offset, 2, v_line.partner_id.name) @@ -134,36 +145,55 @@ class CashDailyReportWizard(models.TransientModel): worksheet.write(k_line+offset, 4, v_payment.journal_id.name) worksheet.write(k_line+offset, 5, -v_line.amount, xls_cell_format_money) - total_payment_returns_amount += v_line.amount + total_payment_returns_amount += -v_line.amount offset += len(v_payment.line_ids) if total_account_payment_amount == 0 and total_payment_returns_amount == 0: raise UserError(_('Not Any Payments')) line = offset if k_line: line = k_line + offset - if total_account_payment_amount > 0: + # NORMAL PAYMENTS + if total_account_payment != 0: line += 1 - worksheet.write(line, 4, _('TOTAL PAYMENTS')) - worksheet.write(line, 5, total_account_payment_amount, + worksheet.write(line, 4, _('TOTAL PAYMENTS'), xls_cell_format_header) + worksheet.write(line, 5, total_account_payment, + xls_cell_format_header) + for journal in payment_journals: + line += 1 + worksheet.write(line, 4, _(journal)) + worksheet.write(line, 5, payment_journals[journal], xls_cell_format_money) - if total_payment_returns_amount > 0: + + # RETURNS + if total_payment_returns_amount != 0: line += 1 - worksheet.write(line, 4, _('TOTAL PAYMENT RETURNS')) - worksheet.write(line, 5, -total_payment_returns_amount, + worksheet.write(line, 4, _('TOTAL PAYMENT RETURNS'), xls_cell_format_header) + worksheet.write(line, 5, total_payment_returns_amount, + xls_cell_format_header) + for journal in return_journals: + line += 1 + worksheet.write(line, 4, _(journal)) + worksheet.write(line, 5, return_journals[journal], + xls_cell_format_money) + + # EXPENSES + if total_account_expenses != 0: + line += 1 + worksheet.write(line, 4, _('TOTAL EXPENSES'), xls_cell_format_header) + worksheet.write(line, 5, -total_account_expenses, + xls_cell_format_header) + for journal in expense_journals: + line += 1 + worksheet.write(line, 4, _(journal)) + worksheet.write(line, 5, -expense_journals[journal], xls_cell_format_money) line += 1 - worksheet.write(line, 4, _('TOTAL')) + worksheet.write(line, 4, _('TOTAL'), xls_cell_format_header) worksheet.write( line, 5, - total_account_payment_amount - total_payment_returns_amount, - xls_cell_format_money) - for journal in journals: - line += 1 - worksheet.write(line, 4, _(journal)) - worksheet.write(line, 5, journals[journal], - xls_cell_format_money) - + total_account_payment_amount + total_payment_returns_amount, + xls_cell_format_header) workbook.close() file_data.seek(0) tnow = fields.Datetime.now().replace(' ', '_')