[FIX] account_voucher: Can pay Sales Receipt multiple times
[odoo/odoo.git] / addons / account_voucher / voucher_sales_purchase_view.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <openerp>
3     <data>
4         <record id="view_voucher_filter_vendor" model="ir.ui.view">
5             <field name="name">account.voucher.purchase.select</field>
6             <field name="model">account.voucher</field>
7             <field name="type">search</field>
8             <field name="arch" type="xml">
9                 <search string="Search Vouchers">
10                     <group col='8' colspan='4'>
11                         <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Vouchers"/>
12                         <filter icon="terp-camera_test" string="Posted" domain="[('state','=','posted')]" help="Posted Vouchers"/>
13                         <separator orientation="vertical"/>
14                         <filter icon="terp-gtk-jump-to-ltr" string="To Review" domain="[('state','=','posted')]" groups="base.group_extended" help="To Review"/>
15                         <separator orientation="vertical"/>
16                         <field name="date"/>
17                         <field name="number"/>
18                         <field name="partner_id" string="Supplier"/>
19                     </group>
20                     <newline/>
21                     <group col='8' colspan='4'>
22                         <field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('purchase','purchase_refund'))]"/>
23                         <field name="period_id" groups="base.group_extended"/>
24                     </group>
25                     <newline/>
26                     <group expand="0" string="Extended Filters..." col='8' colspan='4'>
27                         <field name="reference"/>
28                         <field name="name"/>
29                         <field name="narration"/>
30                         <field name="amount"/>
31                    </group>
32                    <newline/>
33                     <group expand="0" string="Group By..." colspan="4" col="10">
34                         <filter string="Supplier" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
35                         <filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
36                         <filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>
37                         <filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
38                     </group>
39                 </search>
40             </field>
41         </record>
42
43         <record id="view_voucher_filter_sale" model="ir.ui.view">
44             <field name="name">account.voucher.sale.select</field>
45             <field name="model">account.voucher</field>
46             <field name="type">search</field>
47             <field name="arch" type="xml">
48                 <search string="Search Vouchers">
49                     <group col='8' colspan='4'>
50                         <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Vouchers"/>
51                         <filter icon="terp-camera_test" string="Posted" domain="[('state','=','posted')]" help="Posted Vouchers"/>
52                         <separator orientation="vertical"/>
53                         <filter icon="terp-gtk-jump-to-ltr" string="To Review" domain="[('state','=','posted')]" groups="base.group_extended" help="To Review"/>
54                         <separator orientation="vertical"/>
55                         <field name="date"/>
56                         <field name="number"/>
57                         <field name="partner_id" string="Customer"/>
58                     </group>
59                     <newline/>
60                     <group col='8' colspan='4'>
61                         <field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('sale','sale_refund'))]"/>
62                         <field name="period_id" groups="base.group_extended"/>
63                     </group>
64                     <newline/>
65                     <group expand="0" string="Extended Filters..." col='8' colspan='4'>
66                         <field name="reference"/>
67                         <field name="name"/>
68                         <field name="narration"/>
69                         <field name="amount"/>
70                    </group>
71                    <newline/>
72                     <group expand="0" string="Group By..." colspan="4" col="10">
73                         <filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
74                         <filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
75                         <filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>
76                         <filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
77                     </group>
78                 </search>
79             </field>
80         </record>
81
82         <record id="act_pay_voucher" model="ir.actions.act_window">
83             <field name="name">Customer Payment</field>
84             <field name="res_model">account.voucher</field>
85             <field name="view_type">form</field>
86             <field name="domain">[('journal_id.type', 'in', ['bank', 'cash']), ('type','=','receipt'), ('partner_id','=',partner_id)]</field>
87             <field name="context">{'type':'receipt', 'partner_id': partner_id, 'default_reference':reference}</field>
88             <field name="view_id" ref="view_vendor_receipt_form"/>
89             <field name="target">current</field>
90         </record>
91
92         <record model="ir.ui.view" id="view_sale_receipt_form">
93             <field name="name">account.voucher.sale.form</field>
94             <field name="model">account.voucher</field>
95             <field name="type">form</field>
96             <field name="arch" type="xml">
97                 <form string="Sales Receipt">
98                     <group col="6" colspan="4">
99                         <field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date)" string="Customer"/>
100                         <field name="date" on_change="onchange_date(partner_id, journal_id, amount, currency_id, type, date)"/>
101                         <field name="journal_id" domain="[('type','in',['sale','sale_refund'])]" widget="selection" on_change="onchange_journal(journal_id, line_cr_ids, tax_id, partner_id)"/>
102                         <field name="number"/>
103                         <field name="name" colspan="4"/>
104                         <field name="type" invisible="True"/>
105                         <field name="currency_id"/>
106                     </group>
107                     <notebook colspan="4">
108                         <page string="Sales Information">
109                             <field name="line_cr_ids" on_change="onchange_price(line_cr_ids, tax_id, partner_id)" default_get="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" colspan="4" nolabel="1" height="180">
110                                 <tree string="Sales Lines" editable="bottom">
111                                     <field name="account_id" domain="[('user_type.report_type','=','income'),('type','!=','view')]" widget="selection"/>
112                                     <field name="name"/>
113                                     <field name="amount" sum="Total"/>
114                                     <field name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
115                                 </tree>
116                             </field>
117                             <group col="2" colspan="3">
118                                 <separator string="Internal Notes" colspan="2"/>
119                                 <field name="narration" colspan="2" nolabel="1"/>
120                             </group>
121                             <group col="2" colspan="1">
122                                 <group col="2" colspan="1">
123                                     <separator string="Payment Options" colspan="2"/>
124                                     <field name="pay_now" on_change="onchange_payment(pay_now, journal_id, partner_id)" required="1"/>
125                                     <field name="account_id"
126                                          attrs="{'invisible':[('pay_now','!=','pay_now')]}"
127                                           domain="[('type','=','liquidity')]"/>
128                                          <!-- should select income accounts only. Or use the journal for this ? -->
129                                     <field name="reference"
130                                          attrs="{'invisible':[('pay_now','!=','pay_now')]}"
131                                     />
132                                     <field name="date_due" attrs="{'invisible':[('pay_now','=','pay_now')]}"/>
133                                     <field name="paid"/>
134                                 </group>
135                                 <group col="4" colspan="1">
136                                     <separator string="Total" colspan="4"/>
137                                     <field name="tax_id" on_change="onchange_price(line_cr_ids, tax_id, partner_id)" widget="selection" domain="[('type_tax_use','in',('sale','all')), ('parent_id', '=', False)]"/><field name="tax_amount" nolabel="1"/><button type="object" icon="terp-stock_format-scientific" name="compute_tax" groups="base.group_extended" string="Compute Tax" attrs="{'invisible': [('state','!=','draft')]}"/>
138                                     <label string="" colspan="1"/><field name="amount" string="Total"/>
139                                 </group>
140                             </group>
141                         </page>
142                         <page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}">
143                             <group col="6" colspan="4">
144                                 <field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
145                                 <field name="period_id"/>
146                                 <field name="audit"/>
147                             </group>
148                             <field name="move_ids" colspan="4" nolabel="1" readonly="1">
149                                <tree string="Journal Items">
150                                    <field name="move_id"/>
151                                    <field name="ref"/>
152                                    <field name="date"/>
153                                    <field name="statement_id"/>
154                                    <field name="partner_id"/>
155                                    <field name="account_id"/>
156                                    <field name="name"/>
157                                    <field name="debit"/>
158                                    <field name="credit"/>
159                                    <field name="state"/>
160                                    <field name="reconcile_id"/>
161                                </tree>
162                             </field>
163                         </page>
164                     </notebook>
165                     <group col="8" colspan="4">
166                         <field name="state"/>
167                         <button name="cancel_voucher" string="Cancel" states="draft,proforma"  icon="gtk-cancel"/>
168                         <button name="cancel_voucher" string="Cancel" type="object" states="posted" icon="terp-stock_effects-object-colorize" confirm="Are you sure to confirm this record ?"/>
169                         <button name="proforma_voucher" string="Validate" states="draft" icon="gtk-go-forward"/>
170                         <group attrs="{'invisible':['|', ('state','!=','posted'), ('paid','=',True)]}">
171                            <button icon="terp-dolar_ok!" name="%(act_pay_voucher)d" context="{'narration':narration, 'title':'Customer Payment', 'type':'receipt', 'partner_id':partner_id, 'reference':reference, 'amount':amount}" type="action" string="Pay" attrs="{'invisible':[('pay_now','=','pay_now')]}"/>
172                         </group>
173                         <button name="action_cancel_draft" type="object" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
174                     </group>
175                 </form>
176             </field>
177         </record>
178
179         <!-- Sales Voucher -->
180         <record id="action_sale_receipt" model="ir.actions.act_window">
181             <field name="name">Sales Receipt</field>
182             <field name="res_model">account.voucher</field>
183             <field name="view_type">form</field>
184             <field name="domain">[('journal_id.type','in',['sale','sale_refund']), ('type','=','sale')]</field>
185             <field name="context">{'type':'sale'}</field>
186             <field name="view_id" eval="False"/>
187             <field name="search_view_id" ref="view_voucher_filter_sale"/>
188             <field name="target">current</field>
189             <field name="help">When you sell products to a customer, you can give him a sales receipt or an invoice. When the sales receipt is confirmed, it creates journal items automatically and you can record the customer payment related to this sales receipt.</field>
190         </record>
191         <record id="action_sale_receipt_tree" model="ir.actions.act_window.view">
192             <field eval="1" name="sequence"/>
193             <field name="view_mode">tree</field>
194             <field name="act_window_id" ref="action_sale_receipt"/>
195         </record>
196         <record id="action_sale_receipt_form" model="ir.actions.act_window.view">
197             <field eval="2" name="sequence"/>
198             <field name="view_mode">form</field>
199             <field name="view_id" ref="view_sale_receipt_form"/>
200             <field name="act_window_id" ref="action_sale_receipt"/>
201         </record>
202
203         <menuitem id="menu_action_sale_receipt" icon="STOCK_JUSTIFY_FILL"
204             action="action_sale_receipt"
205             parent="account.menu_finance_receivables"
206             groups="base.group_extended"
207             sequence="10"/>
208
209         <!--  Purchase Vouchers -->
210         <record id="act_pay_bills" model="ir.actions.act_window">
211             <field name="name">Bill Payment</field>
212             <field name="res_model">account.voucher</field>
213             <field name="view_type">form</field>
214             <field name="domain">[('journal_id.type', 'in', ['bank', 'cash']), ('type','=','payment'), ('partner_id','=',partner_id)]</field>
215             <field name="context">{'type':'payment', 'partner_id': partner_id, 'default_reference':reference}</field>
216             <field name="view_id" ref="view_vendor_payment_form"/>
217             <field name="target">current</field>
218         </record>
219         <record model="ir.ui.view" id="view_purchase_receipt_form">
220             <field name="name">account.voucher.purchase.form</field>
221             <field name="model">account.voucher</field>
222             <field name="type">form</field>
223             <field name="arch" type="xml">
224                 <form string="Supplier Voucher">
225                     <group col="6" colspan="4">
226                         <field name="partner_id" domain="[('supplier','=',True)]" required="1" string="Supplier" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date)"/>
227                         <field name="date" string="Bill Date" select="1" on_change="onchange_date(partner_id, journal_id, amount, currency_id, type, date)"/>
228                         <field name="journal_id" domain="[('type','in',['purchase','purchase_refund'])]" widget="selection" select="1" on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id)"/>
229                         <field name="number"/>
230                         <field name="name" colspan="2"/>
231                         <field name="reference" select="1"/>
232                         <field name="account_id" domain="[('type','=','other')]"  invisible="True"/>
233                         <field name="type" invisible="True"/>
234                         <field name="currency_id"/>
235                     </group>
236                     <notebook colspan="4">
237                         <page string="Bill Information">
238                             <field name="line_dr_ids" on_change="onchange_price(line_dr_ids, tax_id, partner_id)" default_get="{'journal_id':journal_id,'partner_id':partner_id}" colspan="4" nolabel="1" height="180">
239                                 <tree string="Expense Lines" editable="bottom">
240                                     <field name="account_id" widget="selection" domain="[('user_type.report_type','=','expense'), ('type','!=','view')]"/>
241                                     <field name="name"/>
242                                     <field name="amount"/>
243                                     <field name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
244                                 </tree>
245                             </field>
246                             <group col="2" colspan="3">
247                                 <separator string="Internal Notes" colspan="2"/>
248                                 <field name="narration" colspan="2" nolabel="1"/>
249                             </group>
250                             <group col="2" colspan="1">
251                                 <group col="2" colspan="1">
252                                     <separator string="Payment Terms" colspan="2"/>
253                                     <field name="date_due"/>
254                                     <field name="paid"/>
255                                 </group>
256                                 <group col="4" colspan="1">
257                                     <separator string="Total" colspan="4"/>
258                                     <field name="tax_id" on_change="onchange_price(line_dr_ids, tax_id, partner_id)" widget="selection" domain="[('type_tax_use','in',('purchase','all')), ('parent_id', '=', False)]"/><field name="tax_amount" nolabel="1"/><button type="object" icon="terp-stock_format-scientific" name="compute_tax" string="Compute Tax" groups="base.group_extended" attrs="{'invisible': [('state','!=','draft')]}"/>
259                                     <label string="" colspan="1"/><field name="amount" string="Total"/>
260                                 </group>
261                             </group>
262                         </page>
263                         <page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}">
264                             <group col="6" colspan="4">
265                                 <field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
266                                 <field name="period_id"/>
267                                 <field name="audit"/>
268                             </group>
269                             <field name="move_ids" colspan="4" nolabel="1" readonly="1">
270                                <tree string="Journal Items">
271                                    <field name="move_id"/>
272                                    <field name="ref"/>
273                                    <field name="date"/>
274                                    <field name="statement_id"/>
275                                    <field name="partner_id"/>
276                                    <field name="account_id"/>
277                                    <field name="name"/>
278                                    <field name="debit"/>
279                                    <field name="credit"/>
280                                    <field name="state"/>
281                                    <field name="reconcile_id"/>
282                                </tree>
283                             </field>
284                         </page>
285                     </notebook>
286                     <group col="10" colspan="4">
287                         <field name="state"/>
288                         <button name="cancel_voucher" string="Cancel" states="draft,proforma"  icon="gtk-cancel"/>
289                         <button name="cancel_voucher" string="Cancel" type="object" states="posted" icon="terp-stock_effects-object-colorize" confirm="Are you sure to confirm this record ?"/>
290                         <group attrs="{'invisible':['|', ('state','!=','posted'), ('paid','=',True)]}">
291                             <button icon="terp-dolar_ok!" name="%(act_pay_bills)d" context="{'narration':narration, 'title':'Bill Payment', 'type':'payment', 'partner_id': partner_id, 'reference':reference}" type="action" string="Pay Bill" attrs="{'invisible':[('pay_now','=','pay_now')]}"/>
292                         </group>
293                         <button name="action_cancel_draft" type="object" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
294                         <button name="proforma_voucher" string="Validate" states="draft" icon="gtk-go-forward"/>
295                     </group>
296                 </form>
297             </field>
298         </record>
299         <record id="action_purchase_receipt" model="ir.actions.act_window">
300             <field name="name">Supplier Vouchers</field>
301             <field name="res_model">account.voucher</field>
302             <field name="view_type">form</field>
303             <field name="domain">[('journal_id.type','in',['purchase','purchase_refund']), ('type','=','purchase')]</field>
304             <field name="context">{'type':'purchase'}</field>
305             <field name="view_id" eval="False"/>
306             <field name="search_view_id" eval="view_voucher_filter_vendor"/>
307             <field name="target">current</field>
308         </record>
309         <record id="action_purchase_receipt_tree" model="ir.actions.act_window.view">
310             <field eval="1" name="sequence"/>
311             <field name="view_mode">tree</field>
312             <field name="act_window_id" ref="action_purchase_receipt"/>
313         </record>
314         <record id="action_purchase_receipt_form" model="ir.actions.act_window.view">
315             <field eval="2" name="sequence"/>
316             <field name="view_mode">form</field>
317             <field name="view_id" ref="view_purchase_receipt_form"/>
318             <field name="act_window_id" ref="action_purchase_receipt"/>
319         </record>
320
321         <menuitem id="menu_action_purchase_receipt" icon="STOCK_JUSTIFY_FILL"
322             action="action_purchase_receipt" parent="account.menu_finance_payables" sequence="10"
323             groups="base.group_extended"/>
324
325     </data>
326 </openerp>