add report delete products for sales

This commit is contained in:
Wilson Gomez 2022-11-22 10:11:37 -05:00
parent f9097665ca
commit d05139e942
6 changed files with 1171 additions and 4 deletions

View File

@ -19,6 +19,8 @@ def register():
sale.Sale, sale.Sale,
sale.SaleForceDraft, sale.SaleForceDraft,
sale.SaleLine, sale.SaleLine,
sale.SaleLineHistoryDelete,
sale.SaleLineHistoryDeleteStart,
sale.SaleMove, sale.SaleMove,
shop.SaleShop, shop.SaleShop,
production.Production, production.Production,
@ -29,7 +31,9 @@ def register():
module='sale_pos_frontend_rest', type_='model') module='sale_pos_frontend_rest', type_='model')
Pool.register( Pool.register(
sale.SaleSquareBoxGlobal, sale.SaleSquareBoxGlobal,
sale.SaleLineHistoryDeleteWizard,
module='sale_pos_frontend_rest', type_='wizard') module='sale_pos_frontend_rest', type_='wizard')
Pool.register( Pool.register(
sale.SaleSquareBoxGlobalReport, sale.SaleSquareBoxGlobalReport,
sale.SaleLineHistoryDeleteReport,
module='sale_pos_frontend_rest', type_='report') module='sale_pos_frontend_rest', type_='report')

1009
history_delete_product.fods Normal file

File diff suppressed because it is too large Load Diff

126
sale.py
View File

@ -4,10 +4,13 @@ from __future__ import unicode_literals
from datetime import date, datetime from datetime import date, datetime
from sql import Table from sql import Table
from trytond.pool import PoolMeta, Pool from trytond.pool import PoolMeta, Pool
from trytond.model import fields, ModelSQL from trytond.model import fields, ModelSQL, ModelView
from trytond.modules.product import price_digits
from trytond.pyson import Eval from trytond.pyson import Eval
from trytond.transaction import Transaction from trytond.transaction import Transaction
from trytond.wizard import Wizard from trytond.wizard import (
Wizard, StateTransition, StateView, Button, StateReport
)
from decimal import Decimal from decimal import Decimal
from trytond.wizard import StateReport from trytond.wizard import StateReport
from trytond.report import Report from trytond.report import Report
@ -81,7 +84,6 @@ class Sale(metaclass=PoolMeta):
if tables: if tables:
ShopTable.write(tables, {'sale': None, 'state':'available'}) ShopTable.write(tables, {'sale': None, 'state':'available'})
@classmethod @classmethod
def transition_pay_(cls, sales_to_pay): def transition_pay_(cls, sales_to_pay):
pool = Pool() pool = Pool()
@ -314,6 +316,124 @@ class SaleLine(metaclass=PoolMeta):
__name__ = 'sale.line' __name__ = 'sale.line'
production = fields.Many2One('production', 'Production') production = fields.Many2One('production', 'Production')
@classmethod
def delete(cls, lines):
HistoryDelete = Pool().get('sale.line._history.delete')
lines_to_create = []
lines_to_create_append = lines_to_create.append
for line in lines:
if line.order_sended:
value = {
'line_id': line.id,
'product': line.product,
'quantity': line.quantity,
'date': line.sale.sale_date,
'order_status': line.sale.order_status,
'sale_state': line.sale.state,
'unit_price': line.unit_price,
'base_price': line.base_price,
'shop': line.sale.shop
}
lines_to_create_append(value)
super(SaleLine, cls).delete(lines)
if lines_to_create:
HistoryDelete.create(lines_to_create)
class SaleLineHistoryDelete(ModelView, ModelSQL):
'Sale Line History Delete'
__name__ = 'sale.line._history.delete'
product = fields.Many2One('product.product', 'Product')
line_id = fields.Char('Line id')
order_status = fields.Char('Order Status')
sale_state = fields.Char('Sale State')
quantity = fields.Float('Quantity',
digits=(16, Eval('unit_digits', 2)))
shop = fields.Many2One('sale.shop', 'Shop')
unit_price = fields.Numeric('Unit Price', digits=price_digits)
date = fields.Date('Date')
base_price = fields.Numeric('Base Price', digits=price_digits)
class SaleLineHistoryDeleteStart(ModelSQL, ModelView):
'Sale Line History Delete Start'
__name__ = 'line_history.delete_start'
company = fields.Many2One('company.company', 'Company', required=True)
start_date = fields.Date('Date', required=True)
end_date = fields.Date('Date', required=True)
shop = fields.Many2One('sale.shop', 'Shop', required=True)
@staticmethod
def default_company():
return Transaction().context.get('company')
@staticmethod
def default_shop():
return Transaction().context.get('shop')
@staticmethod
def default_end_date():
Date = Pool().get('ir.date')
return Date.today()
@staticmethod
def default_start_date():
Date = Pool().get('ir.date')
today = Date.today()
date_ = date(today.year, today.month, 1)
return date_
class SaleLineHistoryDeleteWizard(Wizard):
'Sale Line History Delete'
__name__ = 'line_history.delete_wizard'
start = StateView('line_history.delete_start',
'sale_pos_frontend_rest.line_history_delete_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Print', 'print_', 'tryton-ok', default=True),
])
print_ = StateReport('line_history.delete_report')
def do_print_(self, action):
report_context = {
'company': self.start.company.id,
'start_date': self.start.start_date,
'end_date': self.start.end_date,
'shop': self.start.shop.id,
}
return action, report_context
def transition_print_(self):
return 'end'
class SaleLineHistoryDeleteReport(Report):
'Sale Line History Delete Report'
__name__ = 'line_history.delete_report'
@classmethod
def get_context(cls, records, header, data):
report_context = super().get_context(records, header, data)
pool = Pool()
History = pool.get('sale.line._history.delete')
Company = pool.get('company.company')
Shop = pool.get('sale.shop')
domain = [
('date', '>=', data['start_date']),
('date', '<=', data['end_date']),
]
records = History.search_read(domain)
record_ids = [r['id'] for r in records]
records = cls._get_records(record_ids, 'sale.line._history.delete', data)
company = Company(data['company'])
report_context['company'] = company
report_context['shop_name'] = Shop.name
report_context['records'] = records
return report_context
class SaleSquareBoxGlobal(SaleSquareBox): class SaleSquareBoxGlobal(SaleSquareBox):
'Sale Square Box Global' 'Sale Square Box Global'

View File

@ -36,5 +36,26 @@ The COPYRIGHT file at the top level of this repository contains the full copyrig
id="menu_sale_square_box_global" icon="tryton-print" id="menu_sale_square_box_global" icon="tryton-print"
action="wizard_print_sale_square_box_global" sequence="100"/> action="wizard_print_sale_square_box_global" sequence="100"/>
<record model="ir.action.report" id="report_history_delete_product">
<field name="name">Report History Delete Product</field>
<field name="model"></field>
<field name="report_name">line_history.delete_report</field>
<field name="report">sale_pos_frontend_rest/history_delete_product.fods</field>
<field name="template_extension">ods</field>
<field name="translatable">False</field>
</record>
<record model="ir.ui.view" id="line_history_delete_view_form">
<field name="model">line_history.delete_start</field>
<field name="type">form</field>
<field name="name">line_history_delete_view_form</field>
</record>
<record model="ir.action.wizard" id="wizard_print_history_delete_product">
<field name="name">History Delete Products</field>
<field name="wiz_name">line_history.delete_wizard</field>
</record>
<menuitem parent="sale.menu_reporting"
id="menu_sale_history_delete_product" icon="tryton-print"
action="wizard_print_history_delete_product"/>
</data> </data>
</tryton> </tryton>

View File

@ -76,7 +76,7 @@ setup(name=name,
], ],
package_data={ package_data={
'trytond.modules.%s' % MODULE: (info.get('xml', []) 'trytond.modules.%s' % MODULE: (info.get('xml', [])
+ ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt', '*.ods']), + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt', '*.ods', '*.fodt', '*.fods']),
}, },
classifiers=[ classifiers=[
'Development Status :: 5 - Production/Stable', 'Development Status :: 5 - Production/Stable',

View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<!-- This file is part sale_shop module for Tryton.
The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
<form>
<label name="company"/>
<field name="company"/>
<label name="shop"/>
<field name="shop"/>
<label name="start_date"/>
<field name="start_date"/>
<label name="end_date"/>
<field name="end_date"/>
</form>