python - 从行中读取产品价格 - 将其写入会计日记帐 - Odoo v8

标签 python odoo odoo-8

我需要从 One2many 字段读取金额,然后根据记录的状态,将该数量注销到特定日记帐。

这是我的模型:

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")

因此,isbnMany2oneproduct.product 模型,在此模型上我创建了一个新的 Many2one 字段到 account.account

正如您所看到的,此类具有“状态”,因此根据特定的状态,我应该将 contract_worksheet 中的这个数量(即 One2many 字段)写入到我在 product.productdebitcredit 字段创建的特定日记帐。

现在,让我困惑的是如何访问 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

但它没有做任何事情。

那么,有什么想法吗?

编辑

这是我从 order_picking One2many 字段访问的模型:

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")

最佳答案

我认为您应该使用@api.multi而不是@api.model,因为您正在计算值。

此外,将 self 替换为 record,如下所示:

@api.multi
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet')
def accounting_scenarios(self):
    for record in self:
        if record.state == 'awaitingraw':
            record.isbn.printer_wip_account.debit = record.contract_worksheet.total_alles

关于python - 从行中读取产品价格 - 将其写入会计日记帐 - Odoo v8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523856/

相关文章:

javascript - JS+REST+NodeJS : How to parse a JSON list from a JSON object

python - 如何在openerp中设置关系字段的值

python - 将 bool 字段从父类更改为子类 - Odoo v8

menu - 编辑右上角菜单 Odoo v8

nginx - Odoo(在 Debian 上)- longpolling 端口从未使用/打开

php - 来自 jquery for XML 的类似 Sizzle 的库

python - 重新读取保存为文本文件的字典结构,再次作为字典

python - 使用 Python 在 JSON 中查找字符串

css - 如何将 css 文件添加到 Odoo 中的自定义模块?

xml - 如何以特定的product.id 形式给出操作调用?