mirror of
https://bitbucket.org/presik/trytonpsk-sale_pos.git
synced 2023-12-14 07:13:02 +01:00
set sale_date, invoice_date and accounting_date
from date of account statement
This commit is contained in:
parent
60335e7da5
commit
e06de6fcf4
1 changed files with 6 additions and 155 deletions
161
sale.py
161
sale.py
|
@ -43,12 +43,6 @@ class Sale(metaclass=PoolMeta):
|
|||
invoice_number = fields.Char('Invoice Number', states={'readonly': True})
|
||||
invoice_date = fields.Date('Invoice Date')
|
||||
invoice = fields.Many2One('account.invoice', 'Invoice')
|
||||
# Migrated to sale_shop
|
||||
# payments = fields.One2Many('account.statement.line', 'sale', 'Payments')
|
||||
# paid_amount = fields.Function(fields.Numeric('Paid Amount', digits=(16, 2)),
|
||||
# 'get_paid_amount')
|
||||
# residual_amount = fields.Function(fields.Numeric('Residual Amount',
|
||||
# digits=(16, 2), readonly=True), 'get_residual_amount')
|
||||
sale_device = fields.Many2One('sale.device', 'Sale Device',
|
||||
domain=[('shop', '=', Eval('shop'))], depends=['shop'], states=STATES)
|
||||
position = fields.Char('Position', states=STATES)
|
||||
|
@ -95,12 +89,6 @@ class Sale(metaclass=PoolMeta):
|
|||
]
|
||||
return domain
|
||||
|
||||
# @staticmethod
|
||||
# def default_sale_device():
|
||||
# User = Pool().get('res.user')
|
||||
# user = User(Transaction().user)
|
||||
# return user.sale_device and user.sale_device.id or None
|
||||
|
||||
@classmethod
|
||||
def process(cls, sales):
|
||||
configuration = Pool().get('sale.configuration')(1)
|
||||
|
@ -109,7 +97,6 @@ class Sale(metaclass=PoolMeta):
|
|||
invoice = sale.invoices[0]
|
||||
if invoice.state in ('posted', 'paid'):
|
||||
continue
|
||||
# cls.recheck_taxes(sale)
|
||||
if hasattr(configuration, 'password_force_assign') and configuration.password_force_assign and sale.shipment_state == 'none':
|
||||
cls.validate_stock(sale)
|
||||
cls.process_pos(sale)
|
||||
|
@ -128,21 +115,6 @@ class Sale(metaclass=PoolMeta):
|
|||
if product.quantity <= product_ids[product.id]:
|
||||
raise SaleValidationError(gettext('sale_pos.msg_product_quantity', s=product.rec_name))
|
||||
|
||||
# @classmethod
|
||||
# def recheck_taxes(cls, sale):
|
||||
# for line in sale.lines:
|
||||
# vat_required = None
|
||||
# if line.product and line.product.account_category:
|
||||
# for txr in line.product.account_category.customer_taxes_used:
|
||||
# if txr.type == 'percentage' and txr.rate > 0:
|
||||
# vat_required = txr.id
|
||||
# break
|
||||
# if vat_required:
|
||||
# tax_obj = [t.id for t in line.taxes if t.rate and t.rate > 0]
|
||||
# if vat_required not in tax_obj:
|
||||
# raise ProductMissingTaxError(
|
||||
# gettext('sale_pos.msg_missing_tax', s=line.product.rec_name))
|
||||
|
||||
def get_tax_amount(self):
|
||||
# Esto es necesario para impuestos de Licores y Cigarrillos
|
||||
values = self._get_taxes().values()
|
||||
|
@ -167,133 +139,6 @@ class Sale(metaclass=PoolMeta):
|
|||
amounts.append(val)
|
||||
return res + sum(amounts)
|
||||
|
||||
# @classmethod
|
||||
# def import_data(cls, fields_names, data):
|
||||
# pool = Pool()
|
||||
# Product = pool.get('product.product')
|
||||
# Party = pool.get('party.party')
|
||||
# Invoice = pool.get('account.invoice')
|
||||
# SaleLine = pool.get('sale.line')
|
||||
# Voucher = pool.get('account.voucher')
|
||||
# PaymentMode = pool.get('account.voucher.paymode')
|
||||
# Tax = pool.get('account.tax')
|
||||
# user_ = pool.get('res.user')(Transaction().user)
|
||||
# shop_id = user_.shop.id
|
||||
# device_id = user_.sale_device.id
|
||||
# count = 0
|
||||
#
|
||||
# # number_sales = list(set([v[0] for v in data[1:]]))
|
||||
# code_products = list(set([v[6] for v in data[1:]]))
|
||||
# number_parties = list(set([v[4] for v in data[1:]]))
|
||||
#
|
||||
# products = Product.search([
|
||||
# ('code', 'in', code_products),
|
||||
# ('salable', '=', 'true')
|
||||
# ])
|
||||
# products = [p.code for p in products]
|
||||
# not_product = [code for code in code_products if code not in products]
|
||||
# if not products or len(not_product) > 0:
|
||||
# not_product = code_products if not products else not_product
|
||||
# not_product = ', '.join(map(str, not_product))
|
||||
# raise ImportSalesError(
|
||||
# gettext('sale_pos.msg_import_data_sale', field='producto', s=not_product))
|
||||
#
|
||||
# parties = Party.search([
|
||||
# ('id_number', 'in', number_parties),
|
||||
# ])
|
||||
# parties = [p.id_number for p in parties]
|
||||
# not_party = [party for party in number_parties if party not in parties]
|
||||
# if not parties or len(not_party) > 0:
|
||||
# not_party = number_parties if not parties else not_party
|
||||
# not_party = ', '.join(map(str, not_party))
|
||||
# raise ImportSalesError(
|
||||
# gettext('sale_pos.msg_import_data_sale', field='tercero', s=not_party))
|
||||
#
|
||||
# sale_to_create = {}
|
||||
# sales_to_pay = []
|
||||
# for row in data[1:]:
|
||||
# code_ = row[6]
|
||||
# products = Product.search([
|
||||
# ('code', '=', code_)
|
||||
# ])
|
||||
# product = products[0]
|
||||
# day, month, year = row[3].split('/')
|
||||
# sale_date = date(int(year), int(month), int(day))
|
||||
# partys = Party.search([
|
||||
# ('id_number', '=', row[4])
|
||||
# ])
|
||||
# party = partys[0]
|
||||
# if row[0] not in sale_to_create.keys():
|
||||
# # with Transaction().set_context(ctx):
|
||||
# sale, = cls.create([{
|
||||
# 'sale_date': sale_date,
|
||||
# 'party': party.id,
|
||||
# 'number': row[0],
|
||||
# 'invoice_number': row[0],
|
||||
# 'invoice_date': sale_date,
|
||||
# 'invoice_type': 'P',
|
||||
# 'description': row[1],
|
||||
# 'reference': row[2],
|
||||
# 'payment_term': 1,
|
||||
# 'shop': shop_id,
|
||||
# 'sale_device': device_id,
|
||||
# 'invoice_address': party.address_get(type='invoice'),
|
||||
# 'shipment_address': party.address_get(type='delivery'),
|
||||
# }])
|
||||
# sale.on_change_party()
|
||||
# sale.save()
|
||||
# sale_to_create[row[0]] = sale.id
|
||||
# payment_modes = PaymentMode.search([
|
||||
# ('id', '=', row[10])
|
||||
# ])
|
||||
# if not payment_modes:
|
||||
# not_party
|
||||
# raise ImportSalesError(
|
||||
# gettext('sale_pos.msg_import_data_sale', field='modo de pago', s=row[10]))
|
||||
# sales_to_pay.append({
|
||||
# 'sale': sale,
|
||||
# 'payment_mode': payment_modes[0]
|
||||
# })
|
||||
# count += 1
|
||||
# sale_id = sale_to_create[row[0]]
|
||||
# tax_imp = list(product.customer_taxes_used)
|
||||
# if row[9]:
|
||||
# tax = Tax.search(['id', '=', row[9]])
|
||||
# tax_imp.extend(tax)
|
||||
# line = {
|
||||
# 'sale': sale_id,
|
||||
# 'product': product.id,
|
||||
# 'quantity': row[7],
|
||||
# 'description': row[5],
|
||||
# 'unit_digits': product.sale_uom.digits,
|
||||
# 'unit': product.sale_uom,
|
||||
# 'unit_price': Decimal(row[8]),
|
||||
# 'discount': Decimal('0.00'),
|
||||
# 'taxes': [('add', tax_imp)],
|
||||
# }
|
||||
# SaleLine.create([line])
|
||||
#
|
||||
# for p in sales_to_pay:
|
||||
# sale = p['sale']
|
||||
# payment_mode = p['payment_mode']
|
||||
# cls.store_cache([sale])
|
||||
# sale = cls.process_pos(sale)
|
||||
# invoice = sale.invoice
|
||||
# invoice.accounting_date = sale.invoice_date
|
||||
# cls.post_invoices(sale)
|
||||
# sale.state = 'done'
|
||||
# sale.invoice_state = 'paid'
|
||||
# sale.save()
|
||||
# vouchers = Invoice.create_voucher([invoice])
|
||||
# for voucher in vouchers:
|
||||
# voucher.date = sale.invoice_date
|
||||
# voucher.payment_mode = payment_mode
|
||||
# voucher.save()
|
||||
# Voucher.process([voucher])
|
||||
# Voucher.post([voucher])
|
||||
#
|
||||
# return count
|
||||
|
||||
def create_invoice(self):
|
||||
'Create and return an invoice'
|
||||
pool = Pool()
|
||||
|
@ -337,6 +182,12 @@ class Sale(metaclass=PoolMeta):
|
|||
self.copy_resources_to(invoice)
|
||||
return invoice
|
||||
|
||||
def _get_invoice_sale(self):
|
||||
invoice = super(Sale, self)._get_invoice_sale()
|
||||
invoice.invoice_date = sale.sale_date
|
||||
invoice.accounting_date = sale.sale_date
|
||||
return invoice
|
||||
|
||||
def _get_authorization(self, sale):
|
||||
authorization_id = None
|
||||
if sale.untaxed_amount_cache >= 0:
|
||||
|
|
Loading…
Reference in a new issue