diff --git a/stock_picking_deposito/data/data.xml b/stock_picking_deposito/data/data.xml index cba8832..bbbe1be 100644 --- a/stock_picking_deposito/data/data.xml +++ b/stock_picking_deposito/data/data.xml @@ -33,7 +33,6 @@ Depósitos Salidas view - diff --git a/stock_picking_deposito/models/res_partner.py b/stock_picking_deposito/models/res_partner.py index 981d0e5..35735c2 100644 --- a/stock_picking_deposito/models/res_partner.py +++ b/stock_picking_deposito/models/res_partner.py @@ -34,6 +34,10 @@ class ResPartner(models.Model): string='Fecha de la última liquidación de compras', help="Cuándo se realizó la última liquidación de compras con éste proveedor." ) + deposit_sale_last_liquidation_date = fields.Datetime( + string='Fecha de la última liquidación de ventas', + help="Cuándo se realizó la última liquidación de ventas con éste proveedor." + ) @api.onchange('deposit_sale_accept') def _onchange_deposit_sale_accept(self): @@ -61,6 +65,67 @@ class ResPartner(models.Model): def make_liquidation_buy(self, context = None): invoice_obj = self.env['account.invoice'] + + search_vals = [ + ('location_id', '=', self.deposit_buy_location_id.id),'|', + ('location_dest_id', '=', self.env.ref('stock.stock_location_customers').id), + ('location_dest_id', '=', self.env.ref('stock.stock_location_stock').id), + ] + if self.deposit_buy_last_liquidation_date: + search_vals.append(('date', '>', self.deposit_buy_last_liquidation_date.strftime("%Y-%m-%d %H:%M:%S"))) + move_lines = self.env['stock.move.line'].search(search_vals) + product_list = [] + + + + for mv in move_lines: + new_prod = True + for p in product_list: + if p[2]['product_id'] == mv.product_id.id: + p[2]['quantity'] += mv.qty_done + new_prod = False + break + if new_prod: + product_list.append([0, False, { + 'product_id': mv.product_id.id, + 'quantity': mv.qty_done, + 'name': mv.product_id.name, + 'price_unit': mv.product_id.lst_price, + 'uom_id': mv.product_id.uom_id.id, + 'account_id': self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_expenses').id)], limit=1).id + } + ]) + if len(product_list): + self.deposit_buy_last_liquidation_date = fields.datetime.now() + invoice_vals = invoice_obj.default_get(invoice_obj._fields.keys()) + invoice_vals.update({ + 'origin': "Liquidación " + self.deposit_buy_last_liquidation_date.strftime("%d-%m-%Y"), + 'type': 'in_invoice', + 'date_invoice': self.deposit_buy_last_liquidation_date.strftime("%Y-%m-%d %H:%M:%S"), + 'journal_id': self.env.user.company_id.deposit_journal_id.id, + 'account_id': self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_receivable').id)], limit=1).id, + 'partner_id': self.id, + 'invoice_line_ids': product_list, + }) + invoice = self.env['account.invoice'].create(invoice_vals) + views = [(self.env.ref('account.invoice_form').id, 'form')] + return { + 'type': 'ir.actions.act_window', + 'res_model': 'account.invoice', + 'res_id': invoice.id, + 'target': 'current', + 'views': views, + } + else: + msg= "No se ha vendido ningún producto en depósito de éste provedor desde la última liquidación.\n\n" + if self.deposit_buy_last_liquidation_date: + msg += "Fecha última liquidación : %s" %self.deposit_buy_last_liquidation_date.strftime("%d-%m-%Y, %H:%M:%S") + else: + msg += "No se ha realizado ninguna liquidación a éste proveedor." + raise ValidationError(msg) + + def make_liquidation_sale(self, context = None): + invoice_obj = self.env['account.invoice'] search_vals = [ ('location_id', '=', self.deposit_buy_location_id.id),'|', ('location_dest_id', '=', self.env.ref('stock.stock_location_customers').id), diff --git a/stock_picking_deposito/views/view_res_partner.xml b/stock_picking_deposito/views/view_res_partner.xml index 1bb6fa7..11b7c13 100644 --- a/stock_picking_deposito/views/view_res_partner.xml +++ b/stock_picking_deposito/views/view_res_partner.xml @@ -3,15 +3,22 @@ Liquidación Depósito Compras - True ir.actions.server code action =record.make_liquidation_buy() + + Liquidación Depósito Ventas + ir.actions.server + + code + action =record.make_liquidation_sale() + + - Abre Liquidación + Liquida Compras account.invoice form tree,form @@ -19,27 +26,49 @@ new + + Liquida Ventas + account.invoice + form + tree,form + + new + + res.partner 200 - - + + +

Depósitos

+ + + + - -
+ + +