One2many
필드에서 금액을 읽어야합니다. 그러면 기록의 state
에 따라이 수량을 특정 저널에 기록하십시오.회선의 제품 가격을 읽으십시오 - 회계 저널에 기록하십시오 - Odoo v8
class print_order(models.Model):
_name = 'print.order'
name = fields.Char('Reference', required=True, index=True, copy=False, readonly='True', default='New')
date = fields.Date(string="Print Date",default=fields.Datetime.now)
production_orders = fields.Many2one('bsi.production.order', ondelete='cascade', string="Production Order")
due_date = fields.Date(string="Due Date")
journal_entry = fields.Many2one('account.move', string="Journal Entry")
stock_picking_id = fields.Many2one('stock.picking', string="Stock Picking")
order_picking = fields.One2many('print.order.lines', 'print_order', string="Order lines")
book_block = fields.Boolean(string="Book Block", default=True,)
binding = fields.Boolean(string="Binding",) #compute="_bool_binding", readonly=False
edging = fields.Boolean(string="Edging",) #compute="_bool_edging", readonly=False
raw_material_consumed = fields.One2many('stock.move', 'stock_move_lines', string="Raw material consumed")
contract_worksheet = fields.One2many('mrp.worksheet.contract', 'printer_order', string="Worksheet calculation")
name_contract = fields.Char(string="Name", compute="_compute_worksheet")
state = fields.Selection([
('draft','Draft'),
('inprogress','In progress'),
('awaitingraw','Awaiting raw materials'),
('work_in_progress','Print in Progress'),
('delivered','Delivered'),
('cancel','Cancel'),
], string="State")
notes = fields.Text(string="Notes")
printer_book_block = fields.Many2one('res.partner', string="Printer Book Block")
printer_binding = fields.Many2one('res.partner', string="Printer Binding")
printer_edging = fields.Many2one('res.partner', string="Printer Edging")
transporter = fields.Many2one('res.partner', string="Transporter")
total_transport_cost = fields.Float(string="Total transport cost")
additional_job = fields.Boolean(string="Additional Job")
company_id = fields.Many2one('res.company', 'Company',default='_default_company')
location_id = fields.Many2one('stock.location', string="Source Location")
location_dest_id = fields.Many2one('stock.location', string="Destination Location")
그래서, isbn
이 Many2one
product.product
에 모델이 내가 account.account
에 새 Many2one
필드를 만든이 모델에 있습니다 :
이 내 모델입니다.
당신이 볼 수 있듯이
,이 클래스는 내가debit
또는
credit
에 내가
product.product
에 만든 특정 저널로
One2many
필드가
contract_worksheet
에서이 양을 작성해야하므로 특정 상태에 따라 '상태'가 전지.
이제는 무엇이 나를 혼란스럽게합니까? One2many
의 특정 필드에 어떻게 액세스합니까?
상태를 변경하는 동안 자동으로이 작업을 수행하는 방법은 무엇입니까?
@api.model
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet')
def accounting_scenarios(self):
for record in self:
if self.state == awaitingraw:
self.isbn.printer_wip_account.debit = self.contract_worksheet.total_alles
을하지만 아무것도하지 않습니다
이것은 내가 지금까지 시도한 것입니다.
그래서 어떤 아이디어입니까? 난 당신이 값을 계산하기 때문에 당신이 대신 @api.model
의 @api.multi
를 사용한다고 생각
class bsi_print_order_lines(models.Model):
_name = 'bsi.print.order.lines'
print_order = fields.Many2one('bsi.print.order', string="Print Order")
isbn = fields.Many2one('product.product', string="ISBN", domain="[('is_isbn', '=', True)]")
qty = fields.Integer(string="Quantity")
consumed_qty = fields.Integer(string="Quantity consumed")
remaining_qty = fields.Float(string="Remaining quantity") #, compute="_remaining_func"
is_book_block = fields.Boolean(string="Is Book Block Done", compute="compute_book_block")
is_binding = fields.Boolean(string="Is Binding Done", compute="compute_binding")
is_edging = fields.Boolean(string="Is Edging Done", compute="compute_edging")
isbns = fields.Many2one('worksheets.isbns', string="Worksheet ISBNS")
귀하의 질문은 약간 혼란 스럽다. accounting_scenarios는 필드를 계산하는 방법입니까? 어떻게 isbn을 정의합니까? 잘 모르겠지만 for 루프 안에 "self"를 사용하고 있습니다. 대신에 "기록하십시오."... 제가 생각하기에는 문제가 될 수 있습니다 ... @ api.multi도 사용해야 할 수도 있습니다 ... – Lucas
예, 필드를 계산하는 방법으로, 필드를 취해야합니다. One2Many 인 'contract_worksheet'를 작성하고 사례에 따라 차변 또는 대변에 따라 특정 저널로 복사하십시오. 제 질문을 편집하여 줄을 추가하십시오. – NeoVe
편집 완료, 감사합니다 – NeoVe