fix: se limpia la casa
This commit is contained in:
parent
6565be82a2
commit
dcd88381ee
67
sale.py
67
sale.py
@ -14,25 +14,24 @@ from trytond.i18n import gettext
|
|||||||
from trytond.exceptions import UserError
|
from trytond.exceptions import UserError
|
||||||
from trytond.modules.currency.fields import Monetary
|
from trytond.modules.currency.fields import Monetary
|
||||||
|
|
||||||
from trytond.exceptions import UserError
|
|
||||||
|
|
||||||
__all__ = ['Sale', 'SalePaymentForm', 'WizardSalePayment',
|
__all__ = ['Sale', 'SalePaymentForm', 'WizardSalePayment',
|
||||||
'WizardSaleReconcile']
|
'WizardSaleReconcile']
|
||||||
|
|
||||||
|
|
||||||
class Sale(metaclass=PoolMeta):
|
class Sale(metaclass=PoolMeta):
|
||||||
__name__ = 'sale.sale'
|
__name__ = 'sale.sale'
|
||||||
payments = fields.One2Many('account.statement.line', 'sale', 'Payments')
|
payments = fields.One2Many('account.statement.line', 'sale', 'Payments')
|
||||||
paid_amount = fields.Function(fields.Numeric('Paid Amount', readonly=True),
|
paid_amount = fields.Function(fields.Numeric('Paid Amount', readonly=True),
|
||||||
'get_paid_amount')
|
'get_paid_amount')
|
||||||
residual_amount = fields.Function(fields.Numeric('Residual Amount'),
|
residual_amount = fields.Function(fields.Numeric('Residual Amount'),
|
||||||
'get_residual_amount', searcher='search_residual_amount')
|
'get_residual_amount',
|
||||||
|
searcher='search_residual_amount')
|
||||||
sale_device = fields.Many2One('sale.device', 'Sale Device',
|
sale_device = fields.Many2One('sale.device', 'Sale Device',
|
||||||
domain=[('shop', '=', Eval('shop'))],
|
domain=[('shop', '=', Eval('shop'))],
|
||||||
depends=['shop'], states={
|
depends=['shop'], states={
|
||||||
'readonly': Eval('state') != 'draft',
|
'readonly': Eval('state') != 'draft',
|
||||||
}
|
})
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __setup__(cls):
|
def __setup__(cls):
|
||||||
@ -68,7 +67,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
to_post = set()
|
to_post = set()
|
||||||
for sale in sales:
|
for sale in sales:
|
||||||
grouping = getattr(sale.party, 'sale_invoice_grouping_method',
|
grouping = getattr(sale.party, 'sale_invoice_grouping_method',
|
||||||
False)
|
False)
|
||||||
if getattr(sale, 'invoices', None) and not grouping:
|
if getattr(sale, 'invoices', None) and not grouping:
|
||||||
for invoice in sale.invoices:
|
for invoice in sale.invoices:
|
||||||
if not invoice.state == 'draft':
|
if not invoice.state == 'draft':
|
||||||
@ -98,7 +97,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
if not sale.invoices and sale.invoice_method == 'order':
|
if not sale.invoices and sale.invoice_method == 'order':
|
||||||
raise UserError(gettext(
|
raise UserError(gettext(
|
||||||
'sale_payment.not_customer_invoice',
|
'sale_payment.not_customer_invoice',
|
||||||
reference=sale.reference))
|
reference=sale.reference))
|
||||||
|
|
||||||
to_post = cls.set_invoices_to_be_posted(sales)
|
to_post = cls.set_invoices_to_be_posted(sales)
|
||||||
if to_post:
|
if to_post:
|
||||||
@ -143,7 +142,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def get_residual_amount(cls, sales, name):
|
def get_residual_amount(cls, sales, name):
|
||||||
return {s.id: s.total_amount - s.paid_amount if s.state != 'cancelled'
|
return {s.id: s.total_amount - s.paid_amount if s.state != 'cancelled'
|
||||||
else Decimal(0) for s in sales}
|
else Decimal(0) for s in sales}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def search_residual_amount(cls, name, clause):
|
def search_residual_amount(cls, name, clause):
|
||||||
@ -163,16 +162,16 @@ class Sale(metaclass=PoolMeta):
|
|||||||
).select(
|
).select(
|
||||||
sale.id,
|
sale.id,
|
||||||
where=((sale.total_amount_cache != None) &
|
where=((sale.total_amount_cache != None) &
|
||||||
(sale.state.in_([
|
(sale.state.in_([
|
||||||
'draft',
|
'draft',
|
||||||
'quotation',
|
'quotation',
|
||||||
'confirmed',
|
'confirmed',
|
||||||
'processing',
|
'processing',
|
||||||
'done']))),
|
'done']))),
|
||||||
group_by=(sale.id),
|
group_by=(sale.id),
|
||||||
having=(Operator(sale.total_amount_cache -
|
having=(Operator(sale.total_amount_cache -
|
||||||
Sum(Coalesce(payline.amount, 0)), value)
|
Sum(Coalesce(payline.amount, 0)), value)
|
||||||
))
|
))
|
||||||
return [('id', 'in', query)]
|
return [('id', 'in', query)]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -192,14 +191,14 @@ class SalePaymentForm(ModelView):
|
|||||||
'Sale Payment Form'
|
'Sale Payment Form'
|
||||||
__name__ = 'sale.payment.form'
|
__name__ = 'sale.payment.form'
|
||||||
journal = fields.Many2One('account.statement.journal', 'Statement Journal',
|
journal = fields.Many2One('account.statement.journal', 'Statement Journal',
|
||||||
domain=[
|
domain=[
|
||||||
('id', 'in', Eval('journals', [])),
|
('id', 'in', Eval('journals', [])),
|
||||||
],
|
],
|
||||||
depends=['journals'], required=True)
|
depends=['journals'], required=True)
|
||||||
journals = fields.One2Many('account.statement.journal', None,
|
journals = fields.One2Many('account.statement.journal', None,
|
||||||
'Allowed Statement Journals')
|
'Allowed Statement Journals')
|
||||||
payment_amount = Monetary('Payment amount', required=True,
|
payment_amount = Monetary('Payment amount', required=True,
|
||||||
currency='currency', digits='currency')
|
currency='currency', digits='currency')
|
||||||
party = fields.Many2One('party.party', 'Party', readonly=True)
|
party = fields.Many2One('party.party', 'Party', readonly=True)
|
||||||
currency = fields.Many2One('currency.currency', 'Currency', readonly=True)
|
currency = fields.Many2One('currency.currency', 'Currency', readonly=True)
|
||||||
|
|
||||||
@ -208,10 +207,10 @@ class WizardSalePayment(Wizard):
|
|||||||
'Wizard Sale Payment'
|
'Wizard Sale Payment'
|
||||||
__name__ = 'sale.payment'
|
__name__ = 'sale.payment'
|
||||||
start = StateView('sale.payment.form',
|
start = StateView('sale.payment.form',
|
||||||
'sale_payment.sale_payment_view_form', [
|
'sale_payment.sale_payment_view_form', [
|
||||||
Button('Cancel', 'end', 'tryton-cancel'),
|
Button('Cancel', 'end', 'tryton-cancel'),
|
||||||
Button('Pay', 'pay_', 'tryton-ok', default=True),
|
Button('Pay', 'pay_', 'tryton-ok', default=True),
|
||||||
])
|
])
|
||||||
pay_ = StateTransition()
|
pay_ = StateTransition()
|
||||||
|
|
||||||
def default_start(self, fields):
|
def default_start(self, fields):
|
||||||
@ -225,10 +224,10 @@ class WizardSalePayment(Wizard):
|
|||||||
raise UserError(gettext('sale_payment.not_sale_device'))
|
raise UserError(gettext('sale_payment.not_sale_device'))
|
||||||
return {
|
return {
|
||||||
'journal': sale_device.journal.id
|
'journal': sale_device.journal.id
|
||||||
if sale_device.journal else None,
|
if sale_device.journal else None,
|
||||||
'journals': [j.id for j in sale_device.journals],
|
'journals': [j.id for j in sale_device.journals],
|
||||||
'payment_amount': sale.total_amount - sale.paid_amount
|
'payment_amount': sale.total_amount - sale.paid_amount
|
||||||
if sale.paid_amount else sale.total_amount,
|
if sale.paid_amount else sale.total_amount,
|
||||||
'currency': sale.currency and sale.currency.id,
|
'currency': sale.currency and sale.currency.id,
|
||||||
'party': sale.party.id,
|
'party': sale.party.id,
|
||||||
}
|
}
|
||||||
@ -247,7 +246,7 @@ class WizardSalePayment(Wizard):
|
|||||||
], order=[('date', 'DESC')])
|
], order=[('date', 'DESC')])
|
||||||
if not statements:
|
if not statements:
|
||||||
raise UserError(gettext('sale_payment.not_draft_statement',
|
raise UserError(gettext('sale_payment.not_draft_statement',
|
||||||
journal=form.journal.name))
|
journal=form.journal.name))
|
||||||
|
|
||||||
if not sale.number:
|
if not sale.number:
|
||||||
Sale.set_number([sale])
|
Sale.set_number([sale])
|
||||||
@ -258,7 +257,7 @@ class WizardSalePayment(Wizard):
|
|||||||
if not account:
|
if not account:
|
||||||
raise UserError(gettext(
|
raise UserError(gettext(
|
||||||
'sale_payment.party_without_account_receivable',
|
'sale_payment.party_without_account_receivable',
|
||||||
party=sale.party.name))
|
party=sale.party.name))
|
||||||
|
|
||||||
if form.payment_amount:
|
if form.payment_amount:
|
||||||
return StatementLine(
|
return StatementLine(
|
||||||
|
Loading…
Reference in New Issue
Block a user