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
+
+
+
+
-
-
+
+
+
+