4

カスタム モジュールのフィールドをボタンに関連付けてPurchase Order、OpenErp の形式で配置する必要があります。

製品のピッキングが確認されると、このボタンは、カスタム モジュールの「数量」フィールドに入力されたこの製品の数量を「排出」します。

例えば:

class certificados_line(osv.osv):

    _name = 'certificados.line'
    _description = "Items del Certificado"


    def multi_a_b(self, cr, uid, ids, name, arg, context=None):
        res = {}
        for record in self.browse(cr, uid, ids,context):
            res[record.id] = record.Cantidad * record.Precio_Unitario_Declarado
        return res

    _columns = {
        'codigo_n' : fields.related(
                'product_id',
                'codigo_n',
                type='char',
                size=64,
                string='Codigo Arancelario',
                store=True,
                readonly=True,
                ),
        'product_id' : fields.many2one(
                'product.product',
                'Material',
                ),
        'Descripcion_Arancelaria' : fields.many2one(
                'product.category',
                'Descripcion Arancelaria',
                change_default=True,
                domain="[('type','=','normal')]",
                ), 
        'tec_esp': fields.related(
                'product_id',
                'tec_esp',
                type='char',
                size=64,
                string='Especificaciones tecnicas',
                store=True,
                readonly=True,
                ),
        'Cantidad' : fields.float(
                'Cantidad',
                ),
        'Unidad_de_Medida': fields.many2one(
                'product.uom',
                'Unidad de Medida',
                ),
        'Precio_Unitario_Declarado' : fields.float(
               'Precio Unitario Declarado',
                ),
        'Moneda' : fields.many2one(
                'res.currency',
                'Moneda',
                ),
        'Valor_En_Divisas' : fields.function(
                multi_a_b,
                type='integer',
                string='Valor En Divisas',
                ),
        'requisicion_id' : fields.many2one(
                'certificados.certificados',
                'Certificados de No Produccion',
                ondelete='cascade',
                ),
        'Cantidad_Consumida' : fields.related(
                'product_id',
                'outgoing_qty',
                type='float',
                string='Cantidad Consumida',
                store=True,
                readonly=True,
                ),
        'Cantidad_Disponible' : fields.related(
                'product_id',
                'qty_available',
                type='float',
                string='Cantidad Disponible',
                store=True,
                readonly=True,
                ),
    }   
certificados_line()

ここで、Cantidad発注書に自動的に関連付けられるフィールド、つまり、OpenErp の「見積依頼」と「発注書」で、ピッキングが確認されるProductと倉庫の在庫が自動的に更新される「product_qty」というフィールドが必要です。

同じことを行う必要がありますが、OpenErp の在庫や倉庫ではなくCantidad、カスタム モジュールのこのフィールドに対してのみ行う必要があります。一部のアイテムは倉庫から購入および管理され、他のアイテムはこのモジュールから管理されるためです。

フォームのボタンを見てきました。Purchase Orderこのタスク用に新しいボタンを作成できますが、問題は、このフィールドをPurchase Orderカスタム モジュールの に関連付ける方法です。在庫との従来の関係を維持しますか?

さらに理解を深めるために、このボタンがクリックされたかどうかに応じて、自動更新ではなく、独立した更新になります。

私は自分自身を説明したことを願っています。

前もって感謝します。

4

1 に答える 1

1

あなたの質問を明確に理解しているかどうかはわかりませんが、一般的なアプローチを提示してみましょう。

まず、OpenERP における在庫場所と製品在庫の概念を理解する必要があります。

OpenERP の在庫の基本的な構成要素は、製品トランザクション/製品移動です。製品 AAA を場所 XXX から場所 YYY に移動すると、YY で AAA の在庫が増加し、AAA の在庫は XXX で減少します。製品を購入すると、製品は「サプライヤーの場所」から「在庫の場所」に移動します。何かを販売しているときは、製品を「在庫の場所」から「顧客の場所」に移動しています。したがって、特定の場所での製品の在庫は、搬入および搬出された製品の要約になります。

openERP で製品の在庫を更新したいときはいつでも、「在庫の場所」から他の仮想の場所 (顧客の場所、在庫の損失、生産場所など) に在庫を移動する必要があります。

この観点からあなたの考えを教えてください。解決策に焦点を当てて回答を更新します.

于 2013-06-10T08:41:46.983 に答える