diff --git a/kk_sites/models/sale_order.py b/kk_sites/models/sale_order.py
index 0d899308..46ed9183 100644
--- a/kk_sites/models/sale_order.py
+++ b/kk_sites/models/sale_order.py
@@ -6,6 +6,25 @@
import json
import requests
from unicodedata import normalize
+from odoo.exceptions import UserError
+
+
+class SaleOrder(models.Model):
+ _inherit = 'sale.order'
+
+ def _prepare_invoice(self):
+ lines = self.order_line.filtered(
+ lambda x: x.invoice_status != 'invoiced')
+ if all(not (line.is_invoice_ok and line.purchase_order) for line in
+ lines):
+ raise UserError('Não é possível faturar a ordem %s pois nenhuma das\
+ linhas faturáveis está liberada para faturamento e ou a\
+ ordem de compra não está preenchida.\n\
+ Acesse as linhas que deseja faturar, marque a opção "Liberar\
+ para faturamento" e preencha o campo "Ordem de compra"'
+ % self.name)
+ else:
+ return super(SaleOrder, self)._prepare_invoice()
class SaleOrderLine(models.Model):
@@ -18,6 +37,18 @@ class SaleOrderLine(models.Model):
description_proposta = fields.Html(string="Descrição para proposta")
+ is_invoice_ok = fields.Boolean('Liberar para Faturamento')
+
+ purchase_order = fields.Char('Ordem de Compra')
+
+ def invoice_line_create(self, invoice_id, qty):
+ lines = super(SaleOrderLine, self).invoice_line_create(invoice_id, qty)
+ for line in lines:
+ if any(not (item.is_invoice_ok and item.purchase_order) for item
+ in line.sale_line_ids):
+ line.unlink()
+ return lines
+
def get_next_folder_number(self, project):
link = project.kk_site_id.pasta_servidor
res = self.env['kk.sites'].get_server_folders(link, False)
diff --git a/kk_sites/views/sale_order.xml b/kk_sites/views/sale_order.xml
index 8158b421..cc942df9 100644
--- a/kk_sites/views/sale_order.xml
+++ b/kk_sites/views/sale_order.xml
@@ -16,6 +16,43 @@
+
+
+
+
-
\ No newline at end of file
+
+ sale.order.kk.site.tree
+ sale.order.line
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Linhas dos Pedidos
+ ir.actions.act_window
+ sale.order.line
+ form
+ tree
+
+
+
+
+