Se añade ventas por pizzas
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user