Added a refund purchase button in the pos session form. This action creates a stateme... seb
authorSébastien Grignard <seb@amakaze.org>
Wed, 15 Jan 2014 22:59:26 +0000 (23:59 +0100)
committerSébastien Grignard <seb@amakaze.org>
Wed, 15 Jan 2014 22:59:26 +0000 (23:59 +0100)
bikecoop.py
view/point_of_sale.xml

index 91ca5e2..2dd81da 100644 (file)
@@ -23,6 +23,9 @@
 
 from openerp.osv import fields, osv
 import openerp.addons.decimal_precision as dp
+from openerp.tools.translate import _
+from openerp.addons.point_of_sale.wizard.pos_box import PosBoxOut
+
 from datetime import date
 
 
@@ -77,5 +80,37 @@ class product_template(osv.osv):
 
 product_template()
 
+# Inheriting journal in order to define a purchase account which will be used when refunding an employee from an open register
+class account_journal(osv.osv):
+    _inherit = 'account.journal'
+    _columns = {
+       'purchase_account_id' : fields.many2one('account.account', 'Purchase Account', select=1),
+    }
+account_journal()
+
+class PurchaseBox(PosBoxOut):
+    # Copied from account/wizard/pos_box.py since there is no way to overload the account used to create the statement
+    def _run(self, cr, uid, ids, records, context=None):
+        for box in self.browse(cr, uid, ids, context=context):
+            for record in records:
+                if not record.journal_id:
+                    raise osv.except_osv(_('Error!'),
+                                         _("Please check that the field 'Journal' is set on the Bank Statement"))
+                    
+                if not record.journal_id.purchase_account_id:
+                    raise osv.except_osv(_('Error!'),
+                                         _("Please check that the field 'Purchase Account' is set on the payment method '%s'.") % (record.journal_id.name,))
+
+                self._create_bank_statement_line(cr, uid, box, record, context=context)
+
+        return {}
+    
+    def _compute_values_for_statement_line(self, cr, uid, box, record, context=None):
+       values = super(PosBoxOut, self)._compute_values_for_statement_line(cr, uid, box, record, context=context)
+       values['account_id'] = record.journal_id.purchase_account_id.id
+       return values
+
+PurchaseBox()
+    
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
index d9c11c5..2dc0cc5 100644 (file)
                 </xpath>
             </field>
         </record>
+       
+       <act_window 
+            name="Refund a purchase"
+            res_model="cash.box.out"
+            src_model="pos.session"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_cash_box_refund_purchase" />
+    
+       <record model="ir.ui.view" id="view_pos_session_form">
+            <field name="name">pos.session</field>
+            <field name="model">pos.session</field>
+           <field name="inherit_id" ref="point_of_sale.view_pos_session_form"/>
+            <field name="arch" type="xml">
+               <xpath expr="//button[@name='%(point_of_sale.action_pos_box_out)d']" position="after">
+                    <button name="%(action_cash_box_refund_purchase)d" string="Refund a purchase" type="action" states="opened,closing_control"/>
+                </xpath>
+           </field>
+       </record>
+       
+        <record id="view_account_journal_form" model="ir.ui.view">
+            <field name="name">account.journal.form</field>
+            <field name="model">account.journal</field>
+           <field name="inherit_id" ref="account.view_account_journal_form"/>
+            <field name="arch" type="xml">
+               <field name="internal_account_id" position="after">
+                   <field name="purchase_account_id" domain="[('type','!=','view')]"/>
+               </field>
+           </field>
+       </record>
     </data>
-</openerp>
+</openerp>
\ No newline at end of file