Se añade ventas por pizzas

This commit is contained in:
2023-09-17 23:53:24 -05:00
parent 4b837318e3
commit 39351c2640
2 changed files with 457 additions and 216 deletions

View File

@@ -1,13 +1,18 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import ModelSQL, ModelView, fields
from trytond.wizard import Wizard, StateView, Button, StateTransition, StateReport
from trytond.model import ModelView, fields
from trytond.wizard import Wizard, StateView, Button, StateReport
from trytond.transaction import Transaction
from trytond.pool import Pool
from trytond.report import Report
from decimal import Decimal
from datetime import date
__all__ = ['ReportCloseStatementStart', 'PrintReportCloseStatement', 'CashRegister']
__all__ = ['ReportCloseStatementStart', 'PrintReportCloseStatement',
'CashRegister']
class ReportCloseStatementStart(ModelView):
"Vista inicial de reporte de extracto"
@@ -35,10 +40,10 @@ class PrintReportCloseStatement(Wizard):
start = StateView(
'sale.print_cash_register.start',
'sale_fast_food.print_cash_register_start_view_form',[
'sale_fast_food.print_cash_register_start_view_form', [
Button("Cancel", 'end', 'tryton-cancel'),
Button("Print Cash Register",
'print_cash_register', 'tryton-ok', default=True)])
'print_cash_register', 'tryton-ok', default=True)])
print_cash_register = StateReport('sale.cash_register')
@@ -52,17 +57,27 @@ class PrintReportCloseStatement(Wizard):
def transition_print_cash_register(self):
return 'end'
class CashRegister(Report):
"Extracto"
__name__ = 'sale.cash_register'
def _get_number_pizzas_sold(lines):
def _get_info_pizzas_sold(lines):
pizzas = 0
for line in lines:
amount_w_tax = 0
amount_tip = 0
for line in lines:
if line.bought_pizza:
pizzas += line.quantity
return pizzas
amount_w_tax += line.amount_w_tax
if line.product and line.product.template.tip:
amount_tip += line.amount
return {
'amount_tip': amount_tip,
'amount_w_tax': amount_w_tax,
'pizzas': pizzas,
}
def _get_statements_by_date(date):
pool = Pool()
@@ -73,7 +88,7 @@ class CashRegister(Report):
device = user.sale_device
if not device:
return
return
journals = [j.id for j in device.journals]
statements = Statement.search([
('journal', 'in', journals),
@@ -92,7 +107,7 @@ class CashRegister(Report):
today_sales_domain = [('state', 'in', ['processing', 'done']),
('sale_date', '=', data['date']),
('shop', '=', data['shop'])]
today_sales = Sale.search(today_sales_domain,
today_sales = Sale.search(today_sales_domain,
order=[('id', 'ASC')])
if not today_sales:
@@ -100,23 +115,36 @@ class CashRegister(Report):
untaxed_amount = 0
tax_amount = 0
total_amount = 0
number_pizzas_sold = 0
total_pizzas = 0
amount_w_tax_pizzas = []
amount_tips = []
for sale in today_sales:
untaxed_amount += sale.untaxed_amount
tax_amount += sale.tax_amount
number_pizzas_sold += cls._get_number_pizzas_sold(sale.lines)
total_amount+=sale.total_amount
info_pizzas_sold = cls._get_info_pizzas_sold(sale.lines)
total_pizzas += info_pizzas_sold['pizzas']
amount_w_tax_pizzas.append(info_pizzas_sold['amount_w_tax'])
amount_tips.append(info_pizzas_sold['amount_tip'])
total_amount += sale.total_amount
statements = cls._get_statements_by_date(data['date'])
if statements:
report_context['statements'] = [{
'name': statement.journal.name,
'total_amount':statement.total_amount
'start_balance': statement.start_balance,
'end_balance': statement.end_balance,
'total_amount': sum(
(line.amount for line in statement.lines
if line.description), Decimal(0))
} for statement in statements]
report_context['total_statements'] = sum(
[s['total_amount'] for s in report_context['statements']])
report_context['amount_w_tax_pizzas'] = sum(amount_w_tax_pizzas)
report_context['tips'] = sum(amount_tips)
report_context['untaxed_amount'] = untaxed_amount
report_context['tax_amount'] = tax_amount
report_context['total_amount'] = total_amount
report_context['number_pizzas_sold'] = number_pizzas_sold
report_context['number_pizzas_sold'] = total_pizzas
return report_context