이 게시물은 평소보다 조금 복잡해야합니다.이 도메인을 작성하여 각 인보이스 라인에 적합한 재고 팩 작업을 100 % 보장하는 방법은 무엇입니까?
account.invoice.line : pack_operation에 대한 새 입력란을 만들었습니다. 이 필드를 사용하여 PDF 인보이스의 각 행에 대한 일련 번호/로트 번호를 인쇄 할 수 있습니다 (이 부분은 잘 작동 함).
각 송장 라인에 대해 EXACT 및 ONLY 스톡 팩 작업을 선택하기 위해 많은 시간이 지났습니다.
아래 코드에서 [('id', '=', 31)] 도메인을 사용하여 테스트를 PDF로 인쇄했습니다.
호이 인보이스를 작성하여 각 인보이스 라인에 대해 올바른 재고 팩 작업을 얻을 수 있는지 확인하십시오.
정말 여기 당신의 도움이 필요합니다 ... 너무 복잡해서 두뇌가 복잡해졌습니다. 우리의 코드 :
class AccountInvoiceLine(models.Model):
_inherit = "account.invoice.line"
pack_operation = fields.Many2one(comodel_name='stock.pack.operation', compute='compute_stock_pack_operation_id')
def compute_stock_pack_operation_id(self):
stock_operation_obj = self.env['stock.pack.operation']
stock_operation = stock_operation_obj.search( [('id','=', 31)] )
self.pack_operation = stock_operation[0]
EDIT#1
I know that you won't like my code. But, this one seems to work. I take any comments and improvements with pleasure.
class AccountInvoiceLine(models.Model):
_inherit = "account.invoice.line"
pack_operation = fields.Many2one(comodel_name='stock.pack.operation', compute='compute_stock_pack_operation_id')@api.one
def compute_stock_pack_operation_id(self):
procurement_order_obj = self.env['procurement.order']
stock_operation_obj = self.env['stock.pack.operation']
all_picking_ids_for_this_invoice_line = []
for saleorderline in self.sale_line_ids:
for procurement in saleorderline.procurement_ids:
for stockmove in procurement.move_ids:
if stockmove.picking_id.id not in all_picking_ids_for_this_invoice_line
all_picking_ids_for_this_invoice_line.append(stockmove.picking_id.id)
all_picking_ids_for_this_invoice_line))
stock_operation = stock_operation_obj.search(
[ '&',
('picking_id','in',all_picking_ids_for_this_invoice_line),
('product_id','=',self.product_id.id)
]
)
self.pack_operation = stock_operation[0]