This question has been flagged
3 Replies
9117 Views

Could some please spell this out for me in plain English

  • I want to display a field from sale.order in stock.picking.out

I have search for ages now and found many answers, but because my programming skills are very limited and the people who answer the questions are experts, the answers tend to leave me spinning!

I have created first module - Chuffed as chips!

The module allows the sales man to identify the type of packaging needed for the order)....

from osv import osv, fields
class sale_packaging_type_field(osv.osv):
    _inherit = 'sale.order'
    _columns = {
        'sale_packaging_type': fields.selection((('our', 'Our Packaging'), ('unmark', 'Unmarked Packaging')), 'Sale Packaging Type'),
    }
    _defaults = {
        'sale_packaging_type': 'a',
    }

and xml view for sales.order

<openerp>
    <data>
        <record model="ir.ui.view" id="sale_packaging_type_field">
            <field name="name">sale.order.form</field>
            <field name="model">sale.order</field>
            <!-- Inherits from base.view_partner_form -->
            <field name="inherit_id" ref="sale.view_order_form" />
            <field name="arch" type="xml">
                <!-- Add the textual field after the website field -->
                <field name="partner_shipping_id" position="after">
                    <field name="sale_packaging_type" />
                </field>
            </field>
        </record>
    </data>
</openerp>

This works great! :)

So now I'm trying to display the field sale_packaging_type in stock.picking.out using sale_id as the link (so the store man knows how to package the order)

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="sale_packaging_type_out_field">
            <field name="name">stock.picking.out.form</field>
            <field name="model">stock.picking.out</field>
            <!-- Inherits from base.view_partner_form -->
            <field name="inherit_id" ref="stock.view_picking_out_form" />
            <field name="arch" type="xml">
                <!-- Add the textual field after the website field -->
                <field name="stock_journal_id" position="after">
                    <field name="sale_id" /> #Creates a on screen link that the store man can follow - not checked if he has perm'n yet
                </field>
            </field>
        </record>
    </data>
</openerp>

This works as far as displaying sale_id and creating a link

Questions

1) Is there a way to display sale_packaging_type from sale.order using sale_id and only this xml - maybe something similar to what I would use in a rml report? - Yes or No please? ..... If Yes how please? - I've tried this...but doesn't work sale_id.sale_packaging_type

2) If No then do I have to create a new class and related field ? - Yes or No please? ..... If Yes I'll try to do it myself only way to learn! - I'll post my results later for marking by the community!

3) If No guidance please?

Avatar
Discard
Best Answer

Hello,

  1. To disply sale_packing_type in the view you have to create a related field in stock.picking. In the RML report of the picking you can use [[ picking.sale_id and picking.sale_id.sale_packing_type or '']] to display your field - no related field is required for RML.
  2. Yes you need a related field for views
Avatar
Discard
Best Answer

You have to inherit the stock picking as well for you to do this not just the sale order

         class stock_move(osv.osv): 
             _name = 'stock.move'
            _inherit = 'stock.move'
            _columns = { 'sale_packaging_type':xxxxx}
      stock_move()

Plus you might need to create an onchange function in your stock_move as well for the field to be carried along when sale order is confirmed. You need to make your field selectable in the stock move page assuming a delivery is to be carried out for a product that was not generated from no sales order (I think). If your field is not in the stock picking, what happens to your field when one clicks create new in stock picking? this might give you error

Avatar
Discard
Author

Your code has dragged up a couple more questions.

You use _name as per technical memento which states it compulsory

You also call the class stock_move() - which I have also seen, which if I do it crashes!

Any answers? - are these related - ie it crashes because I dont name it?

This is my email. dkaiyewu@fastmail.fm. send me a mail I will send you a module which might be of help. (PS no money involved)

Best Answer

It is much easier to create 2 products, one "our" and one "unmark" for every product. This method would require little to no custom programming.

If you don't like the solution of 2 products, I would suggest that you create a related field in stock.picking that looks up the sale_packaging_type and displays it at the top of the sheet. As Andreas suggested.

Don't bother with stock.move unless you need to itemize the packaging for every product you are selling.

Avatar
Discard
Author

Many thanks, but I only told you half the story - in trying to keep it simple I simplified the code - Our selection criteria actually has 7 options, hence the product list would grow 7 fold. But it may be an option for someone else.

Half the problem is understanding which bit does what to another bit, but I guess thats part of the fun of coding.