← Back to team overview

openerp-l10n-ar-localization team mailing list archive

[Merge] lp:~dariokdg/openerp-l10n-ar-localization/wsfex into lp:openerp-l10n-ar-localization

 

Darío De Giacomo has proposed merging lp:~dariokdg/openerp-l10n-ar-localization/wsfex into lp:openerp-l10n-ar-localization.

Requested reviews:
  Cristian Sebastian Rocha (cristian-rocha)

For more details, see:
https://code.launchpad.net/~dariokdg/openerp-l10n-ar-localization/wsfex/+merge/201057

[l10n-ar-invoice]:
 - [FIX] 'product' (and its types combinations) not being considered as a type. Added.
 - [FIX] 'document_type' doesn't exist. Replaced > 'document_type_id' (error on Consumidor Final)
 - [FIX] If not data, throws a non-catch error. Fixed.

[l10n-ar-wsafip-fex]:
 - [ADD] Functionality of dynamic views (common/FE/FEX) within invoice.
 - [ADD] List of currencies, countries and UoM.
 - [ADD] Updateable currency rates.
 - [ADD] Product code added to invoice and reports.
 - [ADD] Destination country selection (default = partner country).
 - [MOD] Domain in field dst_merc so that is impossible to select a country that has not afip_code filled properly.
 - [MOD] Report modifications to fit FEX standards.
 - [MOD] Readonly and Required attributes reworked (invoice_view.xml).
 - [MOD] FEX Invoice and Journals config wizard adapted.
 - [FIX] Item bonification fixed.
 - [FIX] Minor bugfixes.
 - [UPD] UoM up to date.

[l10n-ar-wsafip-fe]:
 - [FIX] invoice.py bugs corrected. Removed unused function (do_request)
 - [MOD] Report configuration to display correctly streets, corrected tags.

---------------------------

REMOVED PROPOSAL OF l10n_ar_account_check_duo AND l10n_ar_receipt.
-- 
https://code.launchpad.net/~dariokdg/openerp-l10n-ar-localization/wsfex/+merge/201057
Your team OpenERP - Team de Localización Argentina is subscribed to branch lp:openerp-l10n-ar-localization.
=== modified file 'l10n_ar_account_check_duo/account_check_duo_view.xml'
--- l10n_ar_account_check_duo/account_check_duo_view.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/account_check_duo_view.xml	2014-01-09 17:56:50 +0000
@@ -1,219 +1,219 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-      <!-- crea el menu principal-->
-    
-        <menuitem id="menu_account_check" name="Checks" sequence="100"
-            parent="account.menu_finance_bank_and_cash"  />
-        
-            
-    <!--  Issued Check -->
-        <record model="ir.ui.view" id="view_account_issued_check_tree">
-            <field name="name">account.issued.check.tree</field>
-            <field name="model">account.issued.check</field>
-            <field name="arch" type="xml">
-                <tree colors="blue:state == 'draft';black:state in ('handed');red:state == 'hrejected';gray:state == 'cancel'" string="Issued Checks">
-                    <field name="number"/>
-                    <field name="date"/>
-                    <field name="clearing_date"/>
-                    <field name="receiving_partner_id"/>
-                    <field name="checkbook_id"/>
-                    <field name="amount" sum="Total Amount"/>
-                    <field name="change_date"/>
-                    <field name="user_id"/>
-                    <field name="state"/>
-                </tree>
-            </field>
-        </record>
-                  
-                
-      <record model="ir.ui.view" id="view_account_issued_check_form">
-            <field name="name">account.issued.check.form</field>
-            <field name="model">account.issued.check</field>
-            <field name="arch" type="xml">
-                <form string="Issued Checks" version="7.0">
-                <header>
-                <field name="state" widget="statusbar" statusbar_colors='{"hrejected":"red"}'/>
-                </header>
-                <sheet string="Issued Checks">
-                    <group string="Issued Checks" >  
-                        <group>
-                            <field name="checkbook_id" on_change="onchange_checkbook_id(number,checkbook_id)"  domain="[('state','=','active')]"/>
-                            <field name="number" on_change="onchange_number(number)"/>
-                            <field name="amount"/>
-                        </group>
-                        <group>    
-                            <field name="date"/>
-                            <field name="clearing_date" on_change="onchange_clearing_date(date,clearing_date)"/>
-                            <field name="company_id" groups="base.group_multi_company" widget="selection" colspan="2"/>
-                        </group>
-                        <separator  colspan="8"/>     
-                        <group>     
-                            <field name="debit_date"/>
-                        </group>     
-                    </group>    
-                </sheet>    
-                </form>
-            </field>
-        </record> 
-
-        <record model="ir.ui.view" id="view_issued_checks_search">
-            <field name="name">issued.check.search</field>
-            <field name="model">account.issued.check</field>
-            <field name="arch" type="xml">
-                <search string="Issued Checks...">
-                    <filter string="Date" domain="[]" context="{'group_by':'date'}"/>
-                    <filter string="Partner" domain="[]" context="{'group_by':'receiving_partner_id'}"/>
-                    <filter string="State" domain="[]" context="{'group_by':'state'}"/>
-                    <field name="number" select="1" string="Check Number"/>
-                    <field name="receiving_partner_id" select="1" string="Destiny Partner"/>
-                    <field name="state" select="1" string="State"/>
-                </search>
-            </field>
-        </record> 
-
-        <!-- mode="month" --> 
-        <record model="ir.ui.view" id="view_account_issued_check_calendar">
-            <field name="name">account.issued.check.calendar</field>
-            <field name="model">account.issued.check</field>
-            <field name="type">calendar</field>
-            <field name="priority" eval="2"/>
-            <field name="arch" type="xml">
-                <calendar string="Issued Checks" 
-                          date_start="clearing_date" 
-                          color="receiving_partner_id">
-                    <field name="amount" />
-                    <field name="receiving_partner_id" />
-                </calendar>
-            </field>
-        </record>
-    
-
-        
-        
-        <!-- Issued Check Menu -->
-        <record model="ir.actions.act_window" id="action_issued_check">
-            <field name="name">Issued Checks</field>
-            <field name="res_model">account.issued.check</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form,calendar</field>
-            <field name="search_view_id" ref="view_issued_checks_search"/>
-        </record>
-        
-        <menuitem
-            action="action_issued_check"
-            id="menu_treasury_issued_check"
-            name="Issued Checks"
-            parent="menu_account_check"/> 
-            
-            
-
-        <!-- Third Check -->
-        <record model="ir.ui.view" id="view_account_third_check_tree">
-            <field name="name">account.third.check.tree</field>
-            <field name="model">account.third.check</field>
-            <field name="arch" type="xml">
-                <tree colors="blue:state == 'draft';black:state in ('handed','deposited','sold');red:state in ('hrejected','drejected');gray:state == 'cancel'" string="Third Checks">
-                    <field name="sequence_number"/>
-                    <field name="number"/>
-                    <field name="date"/>
-                    <field name="clearing_date"/>
-                    <field name="source_partner_id"/>
-                    <field name="bank_id"/>
-                    <field name="destiny_partner_id"/>
-                    <field name="amount" sum="Total Amount"/>
-                    <field name="change_date"/>
-                    <field name="user_id"/>
-                    <field name="state"/>
-                </tree>
-            </field>
-        </record>
-
-
-        <record model="ir.ui.view" id="view_account_third_check_form">
-            <field name="name">account.third.check.form</field>
-            <field name="model">account.third.check</field>
-            <field name="arch" type="xml">
-                <form string="Third Checks" version="7.0">
-                <header>
-                    <field name="state" widget="statusbar" statusbar_colors='{"hrejected":"red","drejected":"red"}'/>
-                </header>
-                <sheet >
-                    <group string= "Third Checks" colspan="4" >  
-                        <group>    
-                            <field name="number" on_change="onchange_number(number)"/>
-                            <field name="sequence_number"/>
-                            <field name="amount"/>
-                            <field name="date"/>
-                            <separator  colspan="8"/>
-                            <field name="bank_id"/>
-                            <field name="clearing_date" on_change="onchange_clearing_date(date,clearing_date)"/>
-                            <field name="clearing"/>
-                        </group>    
-                        <group>
-                            <field name="company_id" groups="base.group_multi_company" widget="selection" colspan="2"/>
-                            <field name="source_partner_id" readonly="1"/>
-                            <field name="vat" on_change="onchange_vat(vat)"/>
-                            <field name="date_in"/>
-                        </group>
-                    </group>
-                </sheet>
-                </form>
-            </field>
-        </record>
-
-
-        <record id="view_third_checks_search" model="ir.ui.view">
-            <field name="name">third.check.search</field>
-            <field name="model">account.third.check</field>
-            <field name="arch" type="xml">
-                <search string="Third Checks...">
-                    <filter string="Date" domain="[]" context="{'group_by':'date'}"/>
-                    <filter string="Source Partner" domain="[]" context="{'group_by':'source_partner_id'}"/>
-                    <filter string="Destiny Partner" domain="[]" context="{'group_by':'destiny_partner_id'}"/>
-                    <filter icon="terp-document-new" name="holding" string="In Holding" domain="[('state','=','holding')]"/>
-                    <filter string="State" domain="[]" context="{'group_by':'state'}"/>
-                    <field name="number" select="1" string="Check Number"/>
-                    <field name="destiny_partner_id" select="1" string="Destiny Partner"/>
-                    <field name="state" select="1" string="State"/>
-                    <field name="clearing_date" string= "Desde fecha Clearing" select="1"/>
-                    <field name="clearing_date_hasta" string= "Hasta fecha Clearing" select="1"/>
-                </search>
-            </field>
-        </record>
-
-<!-- day_length="24"-->
-        <record model="ir.ui.view" id="view_account_third_check_calendar">
-            <field name="name">account.third.check.calendar</field>
-            <field name="model">account.third.check</field>
-            <field name="priority" eval="2"/>
-            <field name="arch" type="xml">
-                <calendar string="Third Checks" 
-                          date_start="clearing_date" 
-                          color="source_partner_id">
-                    <field name="amount" />
-                    <field name="source_partner_id" />
-                </calendar>
-            </field>
-        </record>
-        
-    
-
-       <!-- Third Check Menu -->
-        <record model="ir.actions.act_window" id="action_third_check">
-            <field name="name">Third Checks</field>
-            <field name="res_model">account.third.check</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form,calendar</field>
-            <field name="search_view_id" ref="view_third_checks_search"/>
-        </record>
-        
-        <menuitem
-            action="action_third_check"
-            id="menu_treasury_third_check"
-            name="Third Checks"
-            parent="menu_account_check"/> 
-            
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+      <!-- crea el menu principal-->
+    
+        <menuitem id="menu_account_check" name="Checks" sequence="100"
+            parent="account.menu_finance_bank_and_cash"  />
+        
+            
+    <!--  Issued Check -->
+        <record model="ir.ui.view" id="view_account_issued_check_tree">
+            <field name="name">account.issued.check.tree</field>
+            <field name="model">account.issued.check</field>
+            <field name="arch" type="xml">
+                <tree colors="blue:state == 'draft';black:state in ('handed');red:state == 'hrejected';gray:state == 'cancel'" string="Issued Checks">
+                    <field name="number"/>
+                    <field name="date"/>
+                    <field name="clearing_date"/>
+                    <field name="receiving_partner_id"/>
+                    <field name="checkbook_id"/>
+                    <field name="amount" sum="Total Amount"/>
+                    <field name="change_date"/>
+                    <field name="user_id"/>
+                    <field name="state"/>
+                </tree>
+            </field>
+        </record>
+                  
+                
+      <record model="ir.ui.view" id="view_account_issued_check_form">
+            <field name="name">account.issued.check.form</field>
+            <field name="model">account.issued.check</field>
+            <field name="arch" type="xml">
+                <form string="Issued Checks" version="7.0">
+                <header>
+                <field name="state" widget="statusbar" statusbar_colors='{"hrejected":"red"}'/>
+                </header>
+                <sheet string="Issued Checks">
+                    <group string="Issued Checks" >  
+                        <group>
+                            <field name="checkbook_id" on_change="onchange_checkbook_id(number,checkbook_id)"  domain="[('state','=','active')]"/>
+                            <field name="number" on_change="onchange_number(number)"/>
+                            <field name="amount"/>
+                        </group>
+                        <group>    
+                            <field name="date"/>
+                            <field name="clearing_date" on_change="onchange_clearing_date(date,clearing_date)"/>
+                            <field name="company_id" groups="base.group_multi_company" widget="selection" colspan="2"/>
+                        </group>
+                        <separator  colspan="8"/>     
+                        <group>     
+                            <field name="debit_date"/>
+                        </group>     
+                    </group>    
+                </sheet>    
+                </form>
+            </field>
+        </record> 
+
+        <record model="ir.ui.view" id="view_issued_checks_search">
+            <field name="name">issued.check.search</field>
+            <field name="model">account.issued.check</field>
+            <field name="arch" type="xml">
+                <search string="Issued Checks...">
+                    <filter string="Date" domain="[]" context="{'group_by':'date'}"/>
+                    <filter string="Partner" domain="[]" context="{'group_by':'receiving_partner_id'}"/>
+                    <filter string="State" domain="[]" context="{'group_by':'state'}"/>
+                    <field name="number" select="1" string="Check Number"/>
+                    <field name="receiving_partner_id" select="1" string="Destiny Partner"/>
+                    <field name="state" select="1" string="State"/>
+                </search>
+            </field>
+        </record> 
+
+        <!-- mode="month" --> 
+        <record model="ir.ui.view" id="view_account_issued_check_calendar">
+            <field name="name">account.issued.check.calendar</field>
+            <field name="model">account.issued.check</field>
+            <field name="type">calendar</field>
+            <field name="priority" eval="2"/>
+            <field name="arch" type="xml">
+                <calendar string="Issued Checks" 
+                          date_start="clearing_date" 
+                          color="receiving_partner_id">
+                    <field name="amount" />
+                    <field name="receiving_partner_id" />
+                </calendar>
+            </field>
+        </record>
+    
+
+        
+        
+        <!-- Issued Check Menu -->
+        <record model="ir.actions.act_window" id="action_issued_check">
+            <field name="name">Issued Checks</field>
+            <field name="res_model">account.issued.check</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form,calendar</field>
+            <field name="search_view_id" ref="view_issued_checks_search"/>
+        </record>
+        
+        <menuitem
+            action="action_issued_check"
+            id="menu_treasury_issued_check"
+            name="Issued Checks"
+            parent="menu_account_check"/> 
+            
+            
+
+        <!-- Third Check -->
+        <record model="ir.ui.view" id="view_account_third_check_tree">
+            <field name="name">account.third.check.tree</field>
+            <field name="model">account.third.check</field>
+            <field name="arch" type="xml">
+                <tree colors="blue:state == 'draft';black:state in ('handed','deposited','sold');red:state in ('hrejected','drejected');gray:state == 'cancel'" string="Third Checks">
+                    <field name="sequence_number"/>
+                    <field name="number"/>
+                    <field name="date"/>
+                    <field name="clearing_date"/>
+                    <field name="source_partner_id"/>
+                    <field name="bank_id"/>
+                    <field name="destiny_partner_id"/>
+                    <field name="amount" sum="Total Amount"/>
+                    <field name="change_date"/>
+                    <field name="user_id"/>
+                    <field name="state"/>
+                </tree>
+            </field>
+        </record>
+
+
+        <record model="ir.ui.view" id="view_account_third_check_form">
+            <field name="name">account.third.check.form</field>
+            <field name="model">account.third.check</field>
+            <field name="arch" type="xml">
+                <form string="Third Checks" version="7.0">
+                <header>
+                    <field name="state" widget="statusbar" statusbar_colors='{"hrejected":"red","drejected":"red"}'/>
+                </header>
+                <sheet >
+                    <group string= "Third Checks" colspan="4" >  
+                        <group>    
+                            <field name="number" on_change="onchange_number(number)"/>
+                            <field name="sequence_number"/>
+                            <field name="amount"/>
+                            <field name="date"/>
+                            <separator  colspan="8"/>
+                            <field name="bank_id"/>
+                            <field name="clearing_date" on_change="onchange_clearing_date(date,clearing_date)"/>
+                            <field name="clearing"/>
+                        </group>    
+                        <group>
+                            <field name="company_id" groups="base.group_multi_company" widget="selection" colspan="2"/>
+                            <field name="source_partner_id" readonly="1"/>
+                            <field name="vat" on_change="onchange_vat(vat)"/>
+                            <field name="date_in"/>
+                        </group>
+                    </group>
+                </sheet>
+                </form>
+            </field>
+        </record>
+
+
+        <record id="view_third_checks_search" model="ir.ui.view">
+            <field name="name">third.check.search</field>
+            <field name="model">account.third.check</field>
+            <field name="arch" type="xml">
+                <search string="Third Checks...">
+                    <filter string="Date" domain="[]" context="{'group_by':'date'}"/>
+                    <filter string="Source Partner" domain="[]" context="{'group_by':'source_partner_id'}"/>
+                    <filter string="Destiny Partner" domain="[]" context="{'group_by':'destiny_partner_id'}"/>
+                    <filter icon="terp-document-new" name="holding" string="In Holding" domain="[('state','=','holding')]"/>
+                    <filter string="State" domain="[]" context="{'group_by':'state'}"/>
+                    <field name="number" select="1" string="Check Number"/>
+                    <field name="destiny_partner_id" select="1" string="Destiny Partner"/>
+                    <field name="state" select="1" string="State"/>
+                    <field name="clearing_date" string= "Desde fecha Clearing" select="1"/>
+                    <field name="clearing_date_hasta" string= "Hasta fecha Clearing" select="1"/>
+                </search>
+            </field>
+        </record>
+
+<!-- day_length="24"-->
+        <record model="ir.ui.view" id="view_account_third_check_calendar">
+            <field name="name">account.third.check.calendar</field>
+            <field name="model">account.third.check</field>
+            <field name="priority" eval="2"/>
+            <field name="arch" type="xml">
+                <calendar string="Third Checks" 
+                          date_start="clearing_date" 
+                          color="source_partner_id">
+                    <field name="amount" />
+                    <field name="source_partner_id" />
+                </calendar>
+            </field>
+        </record>
+        
+    
+
+       <!-- Third Check Menu -->
+        <record model="ir.actions.act_window" id="action_third_check">
+            <field name="name">Third Checks</field>
+            <field name="res_model">account.third.check</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form,calendar</field>
+            <field name="search_view_id" ref="view_third_checks_search"/>
+        </record>
+        
+        <menuitem
+            action="action_third_check"
+            id="menu_treasury_third_check"
+            name="Third Checks"
+            parent="menu_account_check"/> 
+            
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/account_checkbook_view.xml'
--- l10n_ar_account_check_duo/account_checkbook_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_account_check_duo/account_checkbook_view.xml	2014-01-09 17:56:50 +0000
@@ -1,73 +1,73 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record id="view_account_checkbook_search" model="ir.ui.view">
-            <field name="name">account.checkbook.search</field>
-            <field name="model">account.checkbook</field>
-            <field name="arch" type="xml">
-                <search string="Checkbooks">
-                    <field name="name"/>
-                    <field name="account_bank_id"/>
-                    <field name="state"/>
-                </search>
-            </field>
-        </record>
-
-        <record id="view_account_checkbook_tree" model="ir.ui.view">
-            <field name="name">account.checkbook.tree</field>
-            <field name="model">account.checkbook</field>
-            <field name="arch" type="xml">
-                <tree string="Checkbooks">
-                    <field name="name"/>
-                    <field name="range_desde"/>
-                    <field name="range_hasta"/>
-                    <field name="actual_number"/>
-                    <field name="account_bank_id"/>
-                    <field name="state"/>
-                </tree>
-            </field>
-        </record>
-
-
-        <record id="view_account_checkbook_form" model="ir.ui.view">
-            <field name="name">account.checkbook.form</field>
-            <field name="model">account.checkbook</field>
-            <field name="arch" type="xml">
-                <form string="Checkbooks" version="7.0"> 
-                <header string="Checkbooks">
-                        <button name="wkf_active" string="In Use"  states="draft"/>
-                        <button name="wkf_used" string="Used"  states="active"/>
-                    <field name="state" widget="statusbar" statusbar_visible="draft,active,used" statusbar_colors='{"active":"blue"}'/>
-                </header>
-                <sheet string="Checkbooks">
-                    <group col="4">          
-                        <field name="name"/>  
-                        <field name="account_bank_id"/>
-                    </group>
-                    <group string="Ranges" colspan="2" >  
-                        <field name="range_desde" on_change="onchange_desde(range_desde,actual_number)"/>
-                        <field name="range_hasta" on_change="onchange_hasta(range_desde,range_hasta)"/>
-                    </group>
-                    <group  colspan="4" col="2" >   
-                        <field name="actual_number" />
-                    </group>
-                </sheet>
-                </form>
-            </field>
-        </record>
-        
-
-
-        <record id="action_account_checkbooks_form" model="ir.actions.act_window">
-            <field name="name">Checkbooks</field>
-            <field name="res_model">account.checkbook</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="search_view_id" ref="view_account_checkbook_search"/>
-        </record>
-        
-       <menuitem action="action_account_checkbooks_form" id="menu_action_account_checkbooks_form" parent="account.menu_configuration_misc" sequence="101"/>
- 
-    </data>
-</openerp>        
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="view_account_checkbook_search" model="ir.ui.view">
+            <field name="name">account.checkbook.search</field>
+            <field name="model">account.checkbook</field>
+            <field name="arch" type="xml">
+                <search string="Checkbooks">
+                    <field name="name"/>
+                    <field name="account_bank_id"/>
+                    <field name="state"/>
+                </search>
+            </field>
+        </record>
+
+        <record id="view_account_checkbook_tree" model="ir.ui.view">
+            <field name="name">account.checkbook.tree</field>
+            <field name="model">account.checkbook</field>
+            <field name="arch" type="xml">
+                <tree string="Checkbooks">
+                    <field name="name"/>
+                    <field name="range_desde"/>
+                    <field name="range_hasta"/>
+                    <field name="actual_number"/>
+                    <field name="account_bank_id"/>
+                    <field name="state"/>
+                </tree>
+            </field>
+        </record>
+
+
+        <record id="view_account_checkbook_form" model="ir.ui.view">
+            <field name="name">account.checkbook.form</field>
+            <field name="model">account.checkbook</field>
+            <field name="arch" type="xml">
+                <form string="Checkbooks" version="7.0"> 
+                <header string="Checkbooks">
+                        <button name="wkf_active" string="In Use"  states="draft"/>
+                        <button name="wkf_used" string="Used"  states="active"/>
+                    <field name="state" widget="statusbar" statusbar_visible="draft,active,used" statusbar_colors='{"active":"blue"}'/>
+                </header>
+                <sheet string="Checkbooks">
+                    <group col="4">          
+                        <field name="name"/>  
+                        <field name="account_bank_id"/>
+                    </group>
+                    <group string="Ranges" colspan="2" >  
+                        <field name="range_desde" on_change="onchange_desde(range_desde,actual_number)"/>
+                        <field name="range_hasta" on_change="onchange_hasta(range_desde,range_hasta)"/>
+                    </group>
+                    <group  colspan="4" col="2" >   
+                        <field name="actual_number" />
+                    </group>
+                </sheet>
+                </form>
+            </field>
+        </record>
+        
+
+
+        <record id="action_account_checkbooks_form" model="ir.actions.act_window">
+            <field name="name">Checkbooks</field>
+            <field name="res_model">account.checkbook</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="search_view_id" ref="view_account_checkbook_search"/>
+        </record>
+        
+       <menuitem action="action_account_checkbooks_form" id="menu_action_account_checkbooks_form" parent="account.menu_configuration_misc" sequence="101"/>
+ 
+    </data>
+</openerp>        

=== modified file 'l10n_ar_account_check_duo/account_view.xml'
--- l10n_ar_account_check_duo/account_view.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/account_view.xml	2014-01-09 17:56:50 +0000
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-        <record id="view_account_check_journal_form" model="ir.ui.view">
-            <field name="name">account_check.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">
-                <xpath expr="/form/notebook" >
-                    <page string="Check Configuration" attrs="{'invisible':[('type','!=', 'bank')]}">
-                        <group>
-                            <field name="use_issued_check" string="Use Issued Checks"  />
-                            <field name="use_third_check" string="Use Third Checks" />
-                            <field name="validate_only_checks" string="Validate only Checks" />
-                        </group>
-                    </page>
-                </xpath>
-            </field>
-        </record>
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="view_account_check_journal_form" model="ir.ui.view">
+            <field name="name">account_check.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">
+                <xpath expr="/form/notebook" >
+                    <page string="Check Configuration" attrs="{'invisible':[('type','!=', 'bank')]}">
+                        <group>
+                            <field name="use_issued_check" string="Use Issued Checks"  />
+                            <field name="use_third_check" string="Use Third Checks" />
+                            <field name="validate_only_checks" string="Validate only Checks" />
+                        </group>
+                    </page>
+                </xpath>
+            </field>
+        </record>
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/account_voucher_view.xml'
--- l10n_ar_account_check_duo/account_voucher_view.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/account_voucher_view.xml	2014-01-09 17:56:50 +0000
@@ -1,80 +1,80 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-    <!-- Payment -->
-
-        <record id="view_voucher_check_form" model="ir.ui.view">
-            <field name="name">account.voucher.form.inherit</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_vendor_payment_form"/>
-            <field name="arch" type="xml">                
-                <page string="Payment Information" position="after"> 
-                    <page string="Checks" attrs="{'invisible':[('show_check_page','=', False)]}">
-                        <field name="show_check_page" invisible="1"/>
-                        <field name="use_issued_check" invisible="1"/>
-                        <field name="use_third_check" invisible="1"/>
-                        <group attrs="{'invisible':[('use_issued_check','=', False)]}" colspan="4" col="4" >
-                            <field name="issued_check_ids" string="Issued Checks" colspan="4"
-                                        on_change="onchange_issued_checks(issued_check_ids, third_check_ids, journal_id, partner_id, currency_id, type, date)"/>
-                        </group>
-                        <group attrs="{'invisible':[('use_third_check','=', False)]}" colspan="4" col="4" >
-                            <separator string="Third Checks" colspan="4"/>
-                            <field name="third_check_ids" nolabel="1" colspan="4"
-                                        domain="[('state', '=', 'holding')]"
-                                        attrs="{'invisible':[('use_third_check','=', False)]}" 
-                                        on_change="onchange_third_check_ids(issued_check_ids, third_check_ids, journal_id, partner_id, currency_id, type, date)"/>
-                        </group>    
-                    </page>
-                </page>
-            </field>
-        </record> 
-
-   <!-- Receipt -->
-
-        <record id="view_vendor_receipt_check_form" model="ir.ui.view">
-            <field name="name">account.voucher.form.receipt.inherit</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_vendor_receipt_form"/>
-            <field name="arch" type="xml">
-                <page string="Payment Information" position="after" >
-                    <page string="Checks" attrs="{'invisible':[('show_check_page','=', False)]}">
-                        <field name="show_check_page" invisible="1"/>
-                        <field name="use_issued_check" invisible="1"/>
-                        <field name="use_third_check" invisible="1"/>
-                        <field name="third_check_receipt_ids" nolabel="1" colspan="4"
-                                on_change="onchange_third_check_receipt_ids(third_check_receipt_ids, journal_id, partner_id, currency_id, type, date,state)"/>
-                    </page>
-                </page>
-            </field>
-        </record>
-        
-        
-        <record id="action_debit_vendor_receipt" model="ir.actions.act_window">
-            <field name="name">Customer Debit Payment</field>
-            <field name="res_model">account.voucher</field>
-            <field name="view_type">form</field>
-            <field name="domain">[('type','=','receipt')]</field>
-            <field name="context">{'type':'receipt'}</field>
-            <field name="search_view_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
-            <field name="view_id" eval="False"/>
-            <field name="target">current</field>
-            <field name="help">Sales payment allows you to register the payments you receive from your customers. In order to record a payment, you must enter the customer, the payment method (=the journal) and the payment amount. OpenERP will propose to you automatically the reconciliation of this payment with the open invoices or sales receipts.</field>
-        </record>
-        
-        <record id="action_debit_vendor_receipt_tree" model="ir.actions.act_window.view">
-            <field eval="1" name="sequence"/>
-            <field name="view_mode">tree</field>
-            <field name="act_window_id" ref="action_debit_vendor_receipt"/>
-        </record>
-        
-        <record id="action_debit_vendor_receipt_form" model="ir.actions.act_window.view">
-            <field eval="2" name="sequence"/>
-            <field name="view_mode">form</field>
-            <field name="view_id" ref="view_vendor_receipt_check_form"/>  
-            <field name="act_window_id" ref="action_debit_vendor_receipt"/>
-        </record>  
-        
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+    <!-- Payment -->
+
+        <record id="view_voucher_check_form" model="ir.ui.view">
+            <field name="name">account.voucher.form.inherit</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_vendor_payment_form"/>
+            <field name="arch" type="xml">                
+                <page string="Payment Information" position="after"> 
+                    <page string="Checks" attrs="{'invisible':[('show_check_page','=', False)]}">
+                        <field name="show_check_page" invisible="1"/>
+                        <field name="use_issued_check" invisible="1"/>
+                        <field name="use_third_check" invisible="1"/>
+                        <group attrs="{'invisible':[('use_issued_check','=', False)]}" colspan="4" col="4" >
+                            <field name="issued_check_ids" string="Issued Checks" colspan="4"
+                                        on_change="onchange_issued_checks(issued_check_ids, third_check_ids, journal_id, partner_id, currency_id, type, date)"/>
+                        </group>
+                        <group attrs="{'invisible':[('use_third_check','=', False)]}" colspan="4" col="4" >
+                            <separator string="Third Checks" colspan="4"/>
+                            <field name="third_check_ids" nolabel="1" colspan="4"
+                                        domain="[('state', '=', 'holding')]"
+                                        attrs="{'invisible':[('use_third_check','=', False)]}" 
+                                        on_change="onchange_third_check_ids(issued_check_ids, third_check_ids, journal_id, partner_id, currency_id, type, date)"/>
+                        </group>    
+                    </page>
+                </page>
+            </field>
+        </record> 
+
+   <!-- Receipt -->
+
+        <record id="view_vendor_receipt_check_form" model="ir.ui.view">
+            <field name="name">account.voucher.form.receipt.inherit</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_vendor_receipt_form"/>
+            <field name="arch" type="xml">
+                <page string="Payment Information" position="after" >
+                    <page string="Checks" attrs="{'invisible':[('show_check_page','=', False)]}">
+                        <field name="show_check_page" invisible="1"/>
+                        <field name="use_issued_check" invisible="1"/>
+                        <field name="use_third_check" invisible="1"/>
+                        <field name="third_check_receipt_ids" nolabel="1" colspan="4"
+                                on_change="onchange_third_check_receipt_ids(third_check_receipt_ids, journal_id, partner_id, currency_id, type, date,state)"/>
+                    </page>
+                </page>
+            </field>
+        </record>
+        
+        
+        <record id="action_debit_vendor_receipt" model="ir.actions.act_window">
+            <field name="name">Customer Debit Payment</field>
+            <field name="res_model">account.voucher</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('type','=','receipt')]</field>
+            <field name="context">{'type':'receipt'}</field>
+            <field name="search_view_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
+            <field name="view_id" eval="False"/>
+            <field name="target">current</field>
+            <field name="help">Sales payment allows you to register the payments you receive from your customers. In order to record a payment, you must enter the customer, the payment method (=the journal) and the payment amount. OpenERP will propose to you automatically the reconciliation of this payment with the open invoices or sales receipts.</field>
+        </record>
+        
+        <record id="action_debit_vendor_receipt_tree" model="ir.actions.act_window.view">
+            <field eval="1" name="sequence"/>
+            <field name="view_mode">tree</field>
+            <field name="act_window_id" ref="action_debit_vendor_receipt"/>
+        </record>
+        
+        <record id="action_debit_vendor_receipt_form" model="ir.actions.act_window.view">
+            <field eval="2" name="sequence"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="view_vendor_receipt_check_form"/>  
+            <field name="act_window_id" ref="action_debit_vendor_receipt"/>
+        </record>  
+        
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/check_third_sequence.xml'
--- l10n_ar_account_check_duo/check_third_sequence.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_account_check_duo/check_third_sequence.xml	2014-01-09 17:56:50 +0000
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data noupdate="1">
-        <!--Sequence types for account third Check -->
-
-        <record  id="seq_type_check_third" model="ir.sequence.type">
-            <field name="name">check third</field>
-            <field name="code">check.third</field>
-        </record>
-
-        <!--Sequences for account third Check -->
-
-        <record  id="seq_check_third" model="ir.sequence">
-            <field name="name">check third</field>
-            <field name="code">check.third</field>
-            <field name="padding">20</field>
-       <!--     <field name="prefix">R 0001-</field> -->
-        </record>
-    </data>
-</openerp>  
- 
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+        <!--Sequence types for account third Check -->
+
+        <record  id="seq_type_check_third" model="ir.sequence.type">
+            <field name="name">check third</field>
+            <field name="code">check.third</field>
+        </record>
+
+        <!--Sequences for account third Check -->
+
+        <record  id="seq_check_third" model="ir.sequence">
+            <field name="name">check third</field>
+            <field name="code">check.third</field>
+            <field name="padding">20</field>
+       <!--     <field name="prefix">R 0001-</field> -->
+        </record>
+    </data>
+</openerp>  
+ 

=== modified file 'l10n_ar_account_check_duo/partner_view.xml'
--- l10n_ar_account_check_duo/partner_view.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/partner_view.xml	2014-01-09 17:56:50 +0000
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-        <record id="view_res_partner_bank_form" model="ir.ui.view">
-            <field name="name">res.partner.bank.form</field>
-            <field name="model">res.partner.bank</field>
-            <field name="inherit_id" ref="base.view_partner_bank_form"/>
-            <field name="arch" type="xml">
-                <field name="bank" position="after">
-                    <field name="account_id" string="Account"/>
-                </field>
-            </field>
-        </record>
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="view_res_partner_bank_form" model="ir.ui.view">
+            <field name="name">res.partner.bank.form</field>
+            <field name="model">res.partner.bank</field>
+            <field name="inherit_id" ref="base.view_partner_bank_form"/>
+            <field name="arch" type="xml">
+                <field name="bank" position="after">
+                    <field name="account_id" string="Account"/>
+                </field>
+            </field>
+        </record>
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/report_webkit_html_view.xml'
--- l10n_ar_account_check_duo/report_webkit_html_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_account_check_duo/report_webkit_html_view.xml	2014-01-09 17:56:50 +0000
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-                <report auto="False"
-                id="report_webkit_thirdcheck_html"
-                model="account.third.check"
-                name="webkit.account.thirdcheck"
-                file="l10n_ar_account_check_duo/report/report_webkit_thirdcheck_html.mako"
-                string="WebKit Report Third Check"
-                report_type="webkit"
-                webkit_header="report_webkit.ir_header_webkit_basesample0"/>
-                
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+                <report auto="False"
+                id="report_webkit_thirdcheck_html"
+                model="account.third.check"
+                name="webkit.account.thirdcheck"
+                file="l10n_ar_account_check_duo/report/report_webkit_thirdcheck_html.mako"
+                string="WebKit Report Third Check"
+                report_type="webkit"
+                webkit_header="report_webkit.ir_header_webkit_basesample0"/>
+                
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/security/account_check_security.xml'
--- l10n_ar_account_check_duo/security/account_check_security.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/security/account_check_security.xml	2014-01-09 17:56:50 +0000
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <!--<data noupdate="0">-->
-    <data>
-        <record id="access_account_issued_check" model="ir.model.access">
-			<field name="model_id" ref="model_account_issued_check"/>
-			<field name="name">account.issued.check.access</field>
-			<field eval="1" name="perm_read"/>
-			<field eval="1" name="perm_write"/>
-			<field eval="1" name="perm_create"/>
-			<field eval="1" name="perm_unlink"/>
-			<field name="group_id" ref="account.group_account_invoice"/>
-		</record>
-		
-		<record id="access_account_third_check" model="ir.model.access">
-			<field name="model_id" ref="model_account_third_check"/>
-			<field name="name">account.issued.check.access</field>
-			<field eval="1" name="perm_read"/>
-			<field eval="1" name="perm_write"/>
-			<field eval="1" name="perm_create"/>
-			<field eval="1" name="perm_unlink"/>
-			<field name="group_id" ref="account.group_account_invoice"/>
-		</record>
-		
-		<record id="issued_check_rule" model="ir.rule">
-            <field name="name">Issued Check Multi-Company</field>
-            <field model="ir.model" name="model_id" ref="model_account_issued_check"/>
-            <field eval="True" name="global"/>
-            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
-        </record>
-        
-        <record id="third_check_rule" model="ir.rule">
-            <field name="name">Third Check Multi-Company</field>
-            <field model="ir.model" name="model_id" ref="model_account_third_check"/>
-            <field eval="True" name="global"/>
-            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
-        </record>
-        
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <!--<data noupdate="0">-->
+    <data>
+        <record id="access_account_issued_check" model="ir.model.access">
+			<field name="model_id" ref="model_account_issued_check"/>
+			<field name="name">account.issued.check.access</field>
+			<field eval="1" name="perm_read"/>
+			<field eval="1" name="perm_write"/>
+			<field eval="1" name="perm_create"/>
+			<field eval="1" name="perm_unlink"/>
+			<field name="group_id" ref="account.group_account_invoice"/>
+		</record>
+		
+		<record id="access_account_third_check" model="ir.model.access">
+			<field name="model_id" ref="model_account_third_check"/>
+			<field name="name">account.issued.check.access</field>
+			<field eval="1" name="perm_read"/>
+			<field eval="1" name="perm_write"/>
+			<field eval="1" name="perm_create"/>
+			<field eval="1" name="perm_unlink"/>
+			<field name="group_id" ref="account.group_account_invoice"/>
+		</record>
+		
+		<record id="issued_check_rule" model="ir.rule">
+            <field name="name">Issued Check Multi-Company</field>
+            <field model="ir.model" name="model_id" ref="model_account_issued_check"/>
+            <field eval="True" name="global"/>
+            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
+        </record>
+        
+        <record id="third_check_rule" model="ir.rule">
+            <field name="name">Third Check Multi-Company</field>
+            <field model="ir.model" name="model_id" ref="model_account_third_check"/>
+            <field eval="True" name="global"/>
+            <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
+        </record>
+        
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/ticket_deposit_view.xml'
--- l10n_ar_account_check_duo/ticket_deposit_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_account_check_duo/ticket_deposit_view.xml	2014-01-09 17:56:50 +0000
@@ -1,72 +1,72 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<openerp>
-    <data> 
-   <!-- Ticket Deposit Check -->
-   
-        <record model="ir.ui.view" id="view_ticket_deposit_tree">
-            <field name="name">ticket.deposit.tree</field>
-            <field name="model">ticket.deposit</field>
-            <field name="arch" type="xml">
-                <tree string="Ticket Deposit">
-                    <field name="name"/>
-                    <field name="date"/>
-                    <field name="bank_account_id"/>
-                    <field name="total_ammount"/>
-                </tree>
-            </field>
-        </record>
-
-
-        <record model="ir.ui.view" id="view_ticket_deposit_form">
-            <field name="name">ticket.deposit.form</field>
-            <field name="model">ticket.deposit</field>
-            <field name="arch" type="xml">
-                <form string="Ticket Deposit" version="7.0"> 
-                    <group>    
-                        <field name="name"/>
-                        <field name="date"/>
-                        <separator  colspan="8"/>
-                        <field name="bank_account_id"/>
-                        <field name="total_ammount"/>
-                    </group>    
-                    <group>
-                        <field name="checks_ids" />
-                    </group>
-                </form>
-            </field>
-        </record>
-
-
-        <record id="view_ticket_deposit_search" model="ir.ui.view">
-            <field name="name">ticket.deposit.search</field>
-            <field name="model">ticket.deposit</field>
-            <field name="arch" type="xml">
-                <search string="ticket Deposit....">
-                    <filter string="Date" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'date'}"/>
-                    <field name="name" select="1" string="Name Ticket"/>
-                    <field name="bank_account_id" select="1" string="Bank Account"/>
-                </search>
-            </field>
-        </record>
-
-
-       <!-- Third Check Menu -->
-        <record model="ir.actions.act_window" id="action_ticket_deposit_menu">
-            <field name="name">Ticket Deposit</field>
-            <field name="res_model">ticket.deposit</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="search_view_id" ref="view_ticket_deposit_search"/>
-        </record>
-        
-        <menuitem
-            action="action_ticket_deposit_menu"
-            id="menu_treasury_ticket_deposit"
-            name="Ticket Deposit"
-            parent="menu_account_check"/>        
-
-
-                                            
-    </data>
-</openerp>                    
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+    <data> 
+   <!-- Ticket Deposit Check -->
+   
+        <record model="ir.ui.view" id="view_ticket_deposit_tree">
+            <field name="name">ticket.deposit.tree</field>
+            <field name="model">ticket.deposit</field>
+            <field name="arch" type="xml">
+                <tree string="Ticket Deposit">
+                    <field name="name"/>
+                    <field name="date"/>
+                    <field name="bank_account_id"/>
+                    <field name="total_ammount"/>
+                </tree>
+            </field>
+        </record>
+
+
+        <record model="ir.ui.view" id="view_ticket_deposit_form">
+            <field name="name">ticket.deposit.form</field>
+            <field name="model">ticket.deposit</field>
+            <field name="arch" type="xml">
+                <form string="Ticket Deposit" version="7.0"> 
+                    <group>    
+                        <field name="name"/>
+                        <field name="date"/>
+                        <separator  colspan="8"/>
+                        <field name="bank_account_id"/>
+                        <field name="total_ammount"/>
+                    </group>    
+                    <group>
+                        <field name="checks_ids" />
+                    </group>
+                </form>
+            </field>
+        </record>
+
+
+        <record id="view_ticket_deposit_search" model="ir.ui.view">
+            <field name="name">ticket.deposit.search</field>
+            <field name="model">ticket.deposit</field>
+            <field name="arch" type="xml">
+                <search string="ticket Deposit....">
+                    <filter string="Date" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'date'}"/>
+                    <field name="name" select="1" string="Name Ticket"/>
+                    <field name="bank_account_id" select="1" string="Bank Account"/>
+                </search>
+            </field>
+        </record>
+
+
+       <!-- Third Check Menu -->
+        <record model="ir.actions.act_window" id="action_ticket_deposit_menu">
+            <field name="name">Ticket Deposit</field>
+            <field name="res_model">ticket.deposit</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="search_view_id" ref="view_ticket_deposit_search"/>
+        </record>
+        
+        <menuitem
+            action="action_ticket_deposit_menu"
+            id="menu_treasury_ticket_deposit"
+            name="Ticket Deposit"
+            parent="menu_account_check"/>        
+
+
+                                            
+    </data>
+</openerp>                    

=== modified file 'l10n_ar_account_check_duo/wizard_issued/view_issued_check_hreject.xml'
--- l10n_ar_account_check_duo/wizard_issued/view_issued_check_hreject.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/wizard_issued/view_issued_check_hreject.xml	2014-01-09 17:56:50 +0000
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="ir.ui.view" id="account.account_issuedcheck_hreject_form_view">
-            <field name="name">account.issuedcheck.hreject.wizard.form</field>
-            <field name="model">account.issuedcheck.hreject</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <form string="Rejected Handed Check" col="2" version="7.0">
-                    <group> 
-                        <field name="reject_date"/>
-                        <field name="make_expense" string="Make Expense ?"/>
-                        <field name="expense_account"/>
-                        <field name="expense_amount"/>
-                        <field name="invoice_expense"/>
-                    </group>
-                    <footer>
-                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
-                        or
-                        <button type="object" name="action_hreject_issued" string="Rejecting Checks Handed" icon="gtk-ok"/>
-                    </footer>     
-                </form>
-            </field>
-        </record>
-
-        <act_window
-            name="Reject Handed Checks"
-            res_model="account.issuedcheck.hreject"
-            src_model="account.issued.check"
-            view_mode="form"
-            target="new"
-            key2="client_action_multi"
-            id="action_check_issue_hrejected"/>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="account.account_issuedcheck_hreject_form_view">
+            <field name="name">account.issuedcheck.hreject.wizard.form</field>
+            <field name="model">account.issuedcheck.hreject</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Rejected Handed Check" col="2" version="7.0">
+                    <group> 
+                        <field name="reject_date"/>
+                        <field name="make_expense" string="Make Expense ?"/>
+                        <field name="expense_account"/>
+                        <field name="expense_amount"/>
+                        <field name="invoice_expense"/>
+                    </group>
+                    <footer>
+                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
+                        or
+                        <button type="object" name="action_hreject_issued" string="Rejecting Checks Handed" icon="gtk-ok"/>
+                    </footer>     
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            name="Reject Handed Checks"
+            res_model="account.issuedcheck.hreject"
+            src_model="account.issued.check"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_check_issue_hrejected"/>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_deposit.xml'
--- l10n_ar_account_check_duo/wizard_third/view_check_deposit.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/wizard_third/view_check_deposit.xml	2014-01-09 17:56:50 +0000
@@ -1,33 +1,33 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="ir.ui.view" id="account.check_deposit_form_view">
-            <field name="name">account.check.deposit.wizard.form</field>
-            <field name="model">account.check.deposit</field>
-            <field name="arch" type="xml">
-                <form string="Check Deposit" col="2" version="7.0">
-                    <group >
-                        <field name="bank_account_id"/>
-                        <field name="date"/>
-                    </group>
-                    <footer>    
-                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
-                        or
-                        <button type="object" name="action_deposit" string="Checks Deposit" icon="gtk-ok"/>
-                    </footer>     
-                </form>
-            </field>
-        </record>
-
-        <act_window
-            name="Check Deposit"
-            res_model="account.check.deposit"
-            src_model="account.third.check"
-            view_mode="form"
-            target="new"
-            key2="client_action_multi"
-            id="action_check_deposit"/>
-        
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="account.check_deposit_form_view">
+            <field name="name">account.check.deposit.wizard.form</field>
+            <field name="model">account.check.deposit</field>
+            <field name="arch" type="xml">
+                <form string="Check Deposit" col="2" version="7.0">
+                    <group >
+                        <field name="bank_account_id"/>
+                        <field name="date"/>
+                    </group>
+                    <footer>    
+                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
+                        or
+                        <button type="object" name="action_deposit" string="Checks Deposit" icon="gtk-ok"/>
+                    </footer>     
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            name="Check Deposit"
+            res_model="account.check.deposit"
+            src_model="account.third.check"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_check_deposit"/>
+        
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_dreject.xml'
--- l10n_ar_account_check_duo/wizard_third/view_check_dreject.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/wizard_third/view_check_dreject.xml	2014-01-09 17:56:50 +0000
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="ir.ui.view" id="account.check_dreject_form_view">
-            <field name="name">account.check.dreject.wizard.form</field>
-            <field name="model">account.check.dreject</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <form string="Deposited Check Reject" col="2" version="7.0">
-                    <group>
-                        <field name="reject_date"/>
-                        <field name="make_expense" string="Make Expenses ?"/>
-                        <field name="expense_account"/>
-                        <field name="expense_amount"/>
-                        <field name="invoice_expense"/>
-                    </group>    
-                    <footer>
-                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
-                        or
-                        <button type="object" name="action_dreject" string="Deposited Checks Reject" icon="gtk-ok"/>
-                    </footer>
-                </form>
-            </field>
-        </record>
-
-        <act_window
-            name="Rejected Deposited Check"
-            res_model="account.check.dreject"
-            src_model="account.third.check"
-            view_mode="form"
-            target="new"
-            key2="client_action_multi"
-            id="action_check_dreject"/>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="account.check_dreject_form_view">
+            <field name="name">account.check.dreject.wizard.form</field>
+            <field name="model">account.check.dreject</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Deposited Check Reject" col="2" version="7.0">
+                    <group>
+                        <field name="reject_date"/>
+                        <field name="make_expense" string="Make Expenses ?"/>
+                        <field name="expense_account"/>
+                        <field name="expense_amount"/>
+                        <field name="invoice_expense"/>
+                    </group>    
+                    <footer>
+                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
+                        or
+                        <button type="object" name="action_dreject" string="Deposited Checks Reject" icon="gtk-ok"/>
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            name="Rejected Deposited Check"
+            res_model="account.check.dreject"
+            src_model="account.third.check"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_check_dreject"/>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_hreject.xml'
--- l10n_ar_account_check_duo/wizard_third/view_check_hreject.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/wizard_third/view_check_hreject.xml	2014-01-09 17:56:50 +0000
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="ir.ui.view" id="account.check_hreject_form_view">
-            <field name="name">account.check.hreject.wizard.form</field>
-            <field name="model">account.check.hreject</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <form string="Reject Handed Check" col="2" version="7.0">
-                    <group>
-                        <field name="reject_date"/>
-                        <field name="make_expense" string="Make Expense ?"/>
-                        <field name="expense_account"/>
-                        <field name="expense_amount"/>
-                        <field name="invoice_expense"/>
-                    </group>    
-                    <footer>
-                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
-                        or
-                        <button type="object" name="action_hreject" string="Reject Handed Checks" icon="gtk-ok"/>
-                    </footer>     
-                </form>
-            </field>
-        </record>
-
-        <act_window
-            name="Rejected Handed Checks"
-            res_model="account.check.hreject"
-            src_model="account.third.check"
-            view_mode="form"
-            target="new"
-            key2="client_action_multi"
-            id="action_check_hrejected"/>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="account.check_hreject_form_view">
+            <field name="name">account.check.hreject.wizard.form</field>
+            <field name="model">account.check.hreject</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Reject Handed Check" col="2" version="7.0">
+                    <group>
+                        <field name="reject_date"/>
+                        <field name="make_expense" string="Make Expense ?"/>
+                        <field name="expense_account"/>
+                        <field name="expense_amount"/>
+                        <field name="invoice_expense"/>
+                    </group>    
+                    <footer>
+                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
+                        or
+                        <button type="object" name="action_hreject" string="Reject Handed Checks" icon="gtk-ok"/>
+                    </footer>     
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            name="Rejected Handed Checks"
+            res_model="account.check.hreject"
+            src_model="account.third.check"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_check_hrejected"/>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/wizard_third/view_check_sold.xml'
--- l10n_ar_account_check_duo/wizard_third/view_check_sold.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/wizard_third/view_check_sold.xml	2014-01-09 17:56:50 +0000
@@ -1,36 +1,36 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="ir.ui.view" id="account.check_sold_form_view">
-            <field name="name">account.check.sold.wizard.form</field>
-            <field name="model">account.check.sold</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <form string="Check Sold" col="2" version="7.0">
-                    <group>
-                        <field name="expense_account"/>
-                        <field name="sold_date"/>
-                        <field name="expense_amount"/>
-                        <field name="bank_account_id"/>
-                    </group>    
-                    <footer>
-                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
-                        or
-                        <button type="object" name="action_sold" string="Checks sold" icon="gtk-ok"/>
-                    </footer>
-                </form>
-            </field>
-        </record>
-
-        <act_window
-            name="Check Sold"
-            res_model="account.check.sold"
-            src_model="account.third.check"
-            view_mode="form"
-            target="new"
-            key2="client_action_multi"
-            id="action_check_sold"/>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="account.check_sold_form_view">
+            <field name="name">account.check.sold.wizard.form</field>
+            <field name="model">account.check.sold</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Check Sold" col="2" version="7.0">
+                    <group>
+                        <field name="expense_account"/>
+                        <field name="sold_date"/>
+                        <field name="expense_amount"/>
+                        <field name="bank_account_id"/>
+                    </group>    
+                    <footer>
+                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
+                        or
+                        <button type="object" name="action_sold" string="Checks sold" icon="gtk-ok"/>
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            name="Check Sold"
+            res_model="account.check.sold"
+            src_model="account.third.check"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_check_sold"/>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/wizard_third/view_ticket_check_deposit.xml'
--- l10n_ar_account_check_duo/wizard_third/view_ticket_check_deposit.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_account_check_duo/wizard_third/view_ticket_check_deposit.xml	2014-01-09 17:56:50 +0000
@@ -1,36 +1,36 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record model="ir.ui.view" id="wizard_ticket_deposit_form_view">
-            <field name="name">ticket.deposit.wizard.form</field>
-            <field name="model">wizard.ticket.deposit</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <form string="Tickets Checks Deposit" col="2" version="7.0">
-                    <group>
-                        <field name="name"/>
-                        <field name="bank_account_id"/>
-                        <field name="date"/>
-                        <field name="total_amount"/>
-                    </group>    
-                    <footer>
-                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
-                        or
-                        <button type="object" name="action_ticket_deposit" string="Ticket Checks Deposit" icon="gtk-ok"/>
-                    </footer>    
-                </form>
-            </field>
-        </record>
-
-        <act_window
-            name="Ticket Check Deposit"
-            res_model="wizard.ticket.deposit"
-            src_model="account.third.check"
-            view_mode="form"
-            target="new"
-            key2="client_action_multi"
-            id="action_ticket_deposit"/>
-        
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="wizard_ticket_deposit_form_view">
+            <field name="name">ticket.deposit.wizard.form</field>
+            <field name="model">wizard.ticket.deposit</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Tickets Checks Deposit" col="2" version="7.0">
+                    <group>
+                        <field name="name"/>
+                        <field name="bank_account_id"/>
+                        <field name="date"/>
+                        <field name="total_amount"/>
+                    </group>    
+                    <footer>
+                        <button type="special" special="cancel" string="Cancel" icon="gtk-cancel"/>
+                        or
+                        <button type="object" name="action_ticket_deposit" string="Ticket Checks Deposit" icon="gtk-ok"/>
+                    </footer>    
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            name="Ticket Check Deposit"
+            res_model="wizard.ticket.deposit"
+            src_model="account.third.check"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_ticket_deposit"/>
+        
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/workflow_checkbook.xml'
--- l10n_ar_account_check_duo/workflow_checkbook.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_account_check_duo/workflow_checkbook.xml	2014-01-09 17:56:50 +0000
@@ -1,49 +1,49 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record id="account_checkbook" model="workflow">
-            <field name="name">Account Checkbook</field>
-            <field name="osv">account.checkbook</field>
-            <field name="on_create">True</field>
-        </record>
-
-    <!-- Activities -->
-    
-        <record id="act_draft" model="workflow.activity">
-            <field name="wkf_id" ref="account_checkbook"/>
-            <field name="flow_start">True</field>
-            <field name="name">draft</field>
-        </record>
-        
-       <record id="act_active" model="workflow.activity">
-            <field name="wkf_id" ref="account_checkbook"/>
-            <field name="name">active</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_active()</field>
-        </record>
-        
-        <record id="act_used" model="workflow.activity">
-            <field name="wkf_id" ref="account_checkbook"/>
-            <field name="name">used</field>
-            <field name="kind">function</field>
-            <field name="flow_stop">True</field>
-            <field name="action">wkf_used()</field>
-        </record>
-  
-    <!-- Transition -->
-    
-        <record id="trans_draft_active" model="workflow.transition">
-            <field name="act_from" ref="act_draft"/>
-            <field name="act_to" ref="act_active"/>
-            <field name="signal">wkf_active</field>
-        </record>
-        
-        <record id="trans_active_used" model="workflow.transition">
-            <field name="act_from" ref="act_active"/>
-            <field name="act_to" ref="act_used"/>
-            <field name="signal">wkf_used</field>
-        </record>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="account_checkbook" model="workflow">
+            <field name="name">Account Checkbook</field>
+            <field name="osv">account.checkbook</field>
+            <field name="on_create">True</field>
+        </record>
+
+    <!-- Activities -->
+    
+        <record id="act_draft" model="workflow.activity">
+            <field name="wkf_id" ref="account_checkbook"/>
+            <field name="flow_start">True</field>
+            <field name="name">draft</field>
+        </record>
+        
+       <record id="act_active" model="workflow.activity">
+            <field name="wkf_id" ref="account_checkbook"/>
+            <field name="name">active</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_active()</field>
+        </record>
+        
+        <record id="act_used" model="workflow.activity">
+            <field name="wkf_id" ref="account_checkbook"/>
+            <field name="name">used</field>
+            <field name="kind">function</field>
+            <field name="flow_stop">True</field>
+            <field name="action">wkf_used()</field>
+        </record>
+  
+    <!-- Transition -->
+    
+        <record id="trans_draft_active" model="workflow.transition">
+            <field name="act_from" ref="act_draft"/>
+            <field name="act_to" ref="act_active"/>
+            <field name="signal">wkf_active</field>
+        </record>
+        
+        <record id="trans_active_used" model="workflow.transition">
+            <field name="act_from" ref="act_active"/>
+            <field name="act_to" ref="act_used"/>
+            <field name="signal">wkf_used</field>
+        </record>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/workflow_issued.xml'
--- l10n_ar_account_check_duo/workflow_issued.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/workflow_issued.xml	2014-01-09 17:56:50 +0000
@@ -1,65 +1,65 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record id="account_issued_checks" model="workflow">
-            <field name="name">Issued Checks Workflow</field>
-            <field name="osv">account.issued.check</field>
-            <field name="on_create">True</field>
-        </record>
-
-    <!-- Activities -->
-
-        <record id="actt_draft" model="workflow.activity">
-            <field name="wkf_id" ref="account_issued_checks"/>
-            <field name="flow_start">True</field>
-            <field name="name">draft</field>
-        </record>
-        
-        <record id="actt_handed" model="workflow.activity">
-            <field name="wkf_id" ref="account_issued_checks"/>
-            <field name="name">handed</field>
-            <field name="kind">function</field>
-            <field name="action">wkfw_handed()</field>
-        </record>
-        
-        <record id="actt_hrejected" model="workflow.activity">
-            <field name="wkf_id" ref="account_issued_checks"/>
-            <field name="name">hrejected</field>
-            <field name="flow_stop">True</field>
-            <field name="kind">function</field>
-            <field name="action">wkfw_hrejected()</field>
-        </record>
-        
-
-        <record id="actt_cancel" model="workflow.activity">
-            <field name="wkf_id" ref="account_issued_checks"/>
-            <field name="name">cancel</field>
-            <field name="flow_stop">True</field>
-            <field name="kind">function</field>
-            <field name="action">wkfw_cancel()</field>
-        </record>
-        
-    <!-- Transition -->
-
-        <record id="transs_draft_handed" model="workflow.transition">
-            <field name="act_from" ref="actt_draft"/>
-            <field name="act_to" ref="actt_handed"/>
-            <field name="signal">draft_handed</field>
-        </record>
-
-        <record id="transs_handed_hrejected" model="workflow.transition">
-            <field name="act_from" ref="actt_handed"/>
-            <field name="act_to" ref="actt_hrejected"/>
-            <field name="signal">handed_hrejected</field>
-        </record>
-        
-        
-        <record id="transs_draft_cancel" model="workflow.transition">
-            <field name="act_from" ref="actt_draft"/>
-            <field name="act_to" ref="actt_cancel"/>
-            <field name="signal">draft_cancel</field>
-        </record>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="account_issued_checks" model="workflow">
+            <field name="name">Issued Checks Workflow</field>
+            <field name="osv">account.issued.check</field>
+            <field name="on_create">True</field>
+        </record>
+
+    <!-- Activities -->
+
+        <record id="actt_draft" model="workflow.activity">
+            <field name="wkf_id" ref="account_issued_checks"/>
+            <field name="flow_start">True</field>
+            <field name="name">draft</field>
+        </record>
+        
+        <record id="actt_handed" model="workflow.activity">
+            <field name="wkf_id" ref="account_issued_checks"/>
+            <field name="name">handed</field>
+            <field name="kind">function</field>
+            <field name="action">wkfw_handed()</field>
+        </record>
+        
+        <record id="actt_hrejected" model="workflow.activity">
+            <field name="wkf_id" ref="account_issued_checks"/>
+            <field name="name">hrejected</field>
+            <field name="flow_stop">True</field>
+            <field name="kind">function</field>
+            <field name="action">wkfw_hrejected()</field>
+        </record>
+        
+
+        <record id="actt_cancel" model="workflow.activity">
+            <field name="wkf_id" ref="account_issued_checks"/>
+            <field name="name">cancel</field>
+            <field name="flow_stop">True</field>
+            <field name="kind">function</field>
+            <field name="action">wkfw_cancel()</field>
+        </record>
+        
+    <!-- Transition -->
+
+        <record id="transs_draft_handed" model="workflow.transition">
+            <field name="act_from" ref="actt_draft"/>
+            <field name="act_to" ref="actt_handed"/>
+            <field name="signal">draft_handed</field>
+        </record>
+
+        <record id="transs_handed_hrejected" model="workflow.transition">
+            <field name="act_from" ref="actt_handed"/>
+            <field name="act_to" ref="actt_hrejected"/>
+            <field name="signal">handed_hrejected</field>
+        </record>
+        
+        
+        <record id="transs_draft_cancel" model="workflow.transition">
+            <field name="act_from" ref="actt_draft"/>
+            <field name="act_to" ref="actt_cancel"/>
+            <field name="signal">draft_cancel</field>
+        </record>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_account_check_duo/workflow_third.xml'
--- l10n_ar_account_check_duo/workflow_third.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_account_check_duo/workflow_third.xml	2014-01-09 17:56:50 +0000
@@ -1,104 +1,104 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record id="account_third_checks" model="workflow">
-            <field name="name">Third Checks Workflow</field>
-            <field name="osv">account.third.check</field>
-            <field name="on_create">True</field>
-        </record>
-
-    <!-- Activities -->
-
-        <record id="activ_draft" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="flow_start">True</field>
-            <field name="name">draft</field>
-        </record>
-
-        <record id="activ_holding" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="name">holding</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_holding()</field>
-        </record>
-
-        <record id="activ_deposited" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="name">deposited</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_deposited()</field>
-        </record>
-
-        <record id="activ_drejected" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="name">drejected</field>
-            <field name="flow_stop">True</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_drejected()</field>
-        </record>
-
-        <record id="activ_handed" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="name">handed</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_handed()</field>
-        </record>
-        
-        <record id="activ_hrejected" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="name">hrejected</field>
-            <field name="flow_stop">True</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_hrejected()</field>
-        </record>
-
-        <record id="activ_sold" model="workflow.activity">
-            <field name="wkf_id" ref="account_third_checks"/>
-            <field name="name">sold</field>
-            <field name="flow_stop">True</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_sold()</field>
-        </record>
-        
-    <!-- Transition -->
-
-        <record id="trans_check_holding" model="workflow.transition">
-            <field name="act_from" ref="activ_draft"/>
-            <field name="act_to" ref="activ_holding"/>
-            <field name="signal">draft_holding</field>
-        </record>
-
-        <record id="trans_holding_deposited" model="workflow.transition">
-            <field name="act_from" ref="activ_holding"/>
-            <field name="act_to" ref="activ_deposited"/>
-            <field name="signal">holding_deposited</field>
-        </record>
-
-        <record id="trans_deposited_drejected" model="workflow.transition">
-            <field name="act_from" ref="activ_deposited"/>
-            <field name="act_to" ref="activ_drejected"/>
-            <field name="signal">deposited_drejected</field>
-        </record>
-
-        <record id="trans_holding_handed" model="workflow.transition">
-            <field name="act_from" ref="activ_holding"/>
-            <field name="act_to" ref="activ_handed"/>
-            <field name="signal">holding_handed</field>
-        </record>
-        
-        <record id="trans_handed_hrejected" model="workflow.transition">
-            <field name="act_from" ref="activ_handed"/>
-            <field name="act_to" ref="activ_hrejected"/>
-            <field name="signal">handed_hrejected</field>
-        </record>
-        
-        <record id="trans_holding_sold" model="workflow.transition">
-            <field name="act_from" ref="activ_holding"/>
-            <field name="act_to" ref="activ_sold"/>
-            <field name="signal">holding_sold</field>
-        </record>
-
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="account_third_checks" model="workflow">
+            <field name="name">Third Checks Workflow</field>
+            <field name="osv">account.third.check</field>
+            <field name="on_create">True</field>
+        </record>
+
+    <!-- Activities -->
+
+        <record id="activ_draft" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="flow_start">True</field>
+            <field name="name">draft</field>
+        </record>
+
+        <record id="activ_holding" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="name">holding</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_holding()</field>
+        </record>
+
+        <record id="activ_deposited" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="name">deposited</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_deposited()</field>
+        </record>
+
+        <record id="activ_drejected" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="name">drejected</field>
+            <field name="flow_stop">True</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_drejected()</field>
+        </record>
+
+        <record id="activ_handed" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="name">handed</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_handed()</field>
+        </record>
+        
+        <record id="activ_hrejected" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="name">hrejected</field>
+            <field name="flow_stop">True</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_hrejected()</field>
+        </record>
+
+        <record id="activ_sold" model="workflow.activity">
+            <field name="wkf_id" ref="account_third_checks"/>
+            <field name="name">sold</field>
+            <field name="flow_stop">True</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_sold()</field>
+        </record>
+        
+    <!-- Transition -->
+
+        <record id="trans_check_holding" model="workflow.transition">
+            <field name="act_from" ref="activ_draft"/>
+            <field name="act_to" ref="activ_holding"/>
+            <field name="signal">draft_holding</field>
+        </record>
+
+        <record id="trans_holding_deposited" model="workflow.transition">
+            <field name="act_from" ref="activ_holding"/>
+            <field name="act_to" ref="activ_deposited"/>
+            <field name="signal">holding_deposited</field>
+        </record>
+
+        <record id="trans_deposited_drejected" model="workflow.transition">
+            <field name="act_from" ref="activ_deposited"/>
+            <field name="act_to" ref="activ_drejected"/>
+            <field name="signal">deposited_drejected</field>
+        </record>
+
+        <record id="trans_holding_handed" model="workflow.transition">
+            <field name="act_from" ref="activ_holding"/>
+            <field name="act_to" ref="activ_handed"/>
+            <field name="signal">holding_handed</field>
+        </record>
+        
+        <record id="trans_handed_hrejected" model="workflow.transition">
+            <field name="act_from" ref="activ_handed"/>
+            <field name="act_to" ref="activ_hrejected"/>
+            <field name="signal">handed_hrejected</field>
+        </record>
+        
+        <record id="trans_holding_sold" model="workflow.transition">
+            <field name="act_from" ref="activ_holding"/>
+            <field name="act_to" ref="activ_sold"/>
+            <field name="signal">holding_sold</field>
+        </record>
+
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_invoice/AUTHORS'
--- l10n_ar_invoice/AUTHORS	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/AUTHORS	2014-01-09 17:56:50 +0000
@@ -34,5 +34,6 @@
 ##############################################################################
 
 Cristian S. Rocha <cristian.rocha@xxxxxxxxxxx>
+Darío Kevin De Giacomo (www.elepeservicios.com.ar) <dariokdg@xxxxxxxxx>
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'l10n_ar_invoice/afip.py'
--- l10n_ar_invoice/afip.py	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/afip.py	2014-01-09 17:56:50 +0000
@@ -95,14 +95,14 @@
         'active': fields.boolean('Active'),
         'product_types': fields.char('Product types',
                                      help='Only use products with this product types in this journals. '
-                                     'Types must be a subset of adjust, consu and service separated by commas.'),
+                                     'Types must be a subset of adjust, product, consu and service separated by commas.'),
     }
 
     def _check_product_types(self, cr, uid, ids, context=None):
         for jc in self.browse(cr, uid, ids, context=context):
             if jc.product_types:
                 types = set(jc.product_types.split(','))
-                res = types.issubset(['adjust','consu','service'])
+                res = types.issubset(['adjust','consu','service','product'])
             else:
                 res = True
         return res
@@ -132,14 +132,14 @@
         'active': fields.boolean('Active'),
         'product_types': fields.char('Product types',
                                      help='Translate this product types to this AFIP concept. '
-                                     'Types must be a subset of adjust, consu and service separated by commas.',required=True),
+                                     'Types must be a subset of adjust, product, consu and service separated by commas.',required=True),
     }
 
     def _check_product_types(self, cr, uid, ids, context=None):
         for ct in self.browse(cr, uid, ids, context=context):
             if ct.product_types:
                 types = set(ct.product_types.split(','))
-                res = types.issubset(['adjust','consu','service'])
+                res = types.issubset(['adjust','consu','service','product'])
             else:
                 res = True
         return res

=== modified file 'l10n_ar_invoice/data/responsability.xml'
--- l10n_ar_invoice/data/responsability.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/data/responsability.xml	2014-01-09 17:56:50 +0000
@@ -33,7 +33,7 @@
         </record>
         <record model='afip.responsability' id='res_EXT'>
             <field name='code'>EXT</field>
-            <field name='name'>Extrangero</field>
+            <field name='name'>Extranjero</field>
 	    <field name='active' eval="True"/>
         </record>
     </data>

=== modified file 'l10n_ar_invoice/data/responsability_class.xml'
--- l10n_ar_invoice/data/responsability_class.xml	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/data/responsability_class.xml	2014-01-09 17:56:50 +0000
@@ -10,7 +10,7 @@
         </record> 
         <record model='afip.responsability_relation' id='ivari_ext'>
                 <field name='document_class_id' ref='dc_E'/>
-                <field name='name'>Responsable Inscripto A Extrangero</field>
+                <field name='name'>Responsable Inscripto A Extranjero</field>
                 <field name='issuer_id' ref='res_IVARI'/>
                 <field name='receptor_id' ref='res_EXT'/>
 	    	<field name='active' eval="True"/>
@@ -73,7 +73,7 @@
         </record> 
         <record model='afip.responsability_relation' id='rm_ext'>
                 <field name='document_class_id' ref='dc_E'/>
-                <field name='name'>Responsable Monotributo A Extrangero</field>
+                <field name='name'>Responsable Monotributo A Extranjero</field>
                 <field name='issuer_id' ref='res_RM'/>
                 <field name='receptor_id' ref='res_EXT'/>
 	    	<field name='active' eval="True"/>

=== modified file 'l10n_ar_invoice/invoice.py'
--- l10n_ar_invoice/invoice.py	2013-12-05 21:01:41 +0000
+++ l10n_ar_invoice/invoice.py	2014-01-09 17:56:50 +0000
@@ -30,7 +30,7 @@
 class account_invoice_line(osv.osv):
     """
     En argentina como no se diferencian los impuestos en las facturas, excepto el IVA,
-    agrego funciones que ignoran el iva solamenta a la hora de imprimir los valores.
+    agrego funciones que ignoran el iva solamente a la hora de imprimir los valores.
 
     En esta nueva versión se cambia las tres variables a una única función 'price_calc'
     que se reemplaza de la siguiente manera:
@@ -127,7 +127,7 @@
 
             # If Final Consumer have pay more than 1000$, you need more information to generate document.
             if invoice.partner_id.responsability_id.code == 'CF' and invoice.amount_total > 1000 and \
-               (invoice.partner_id.document_type.code in [ None, 'Sigd' ] or invoice.partner_id.document_number is None):
+               (invoice.partner_id.document_type_id.code in [ None, 'Sigd' ] or invoice.partner_id.document_number is None):
                 raise osv.except_osv(_('Partner without Identification for total invoices > $1000.-'),
                                      _('You must define valid document type and number for this Final Consumer.'))
         return True
@@ -216,16 +216,16 @@
                 result['domain'].update({
                     'journal_id': [('id','in', accepted_journal_ids)],
                 })
-                #result['value'].update({
-                #    'journal_id': accepted_journal_ids[0],
-                #})
+                result['value'].update({
+                    'journal_id': accepted_journal_ids[0],
+                })
             else:
                 result['domain'].update({
                     'journal_id': [('id','in',[])],
                 })
-                #result['value'].update({
-                #    'journal_id': False,
-                #})
+                result['value'].update({
+                    'journal_id': False,
+                })
 
         return result
 

=== modified file 'l10n_ar_invoice/partner.py'
--- l10n_ar_invoice/partner.py	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/partner.py	2014-01-09 17:56:50 +0000
@@ -75,7 +75,7 @@
 
     def afip_validation(sefl, cr, uid, ids, context={}):
         """ Hay que validar si el partner no es de tipo 'consumidor final' tenga un CUIT asociado.
-            - Si el cuit es extrangero, hay que asignar a document_number y document_type los correspondientes
+            - Si el cuit es extranjero, hay que asignar a document_number y document_type los correspondientes
             a la interpretación argentina del CUIT.
             - Si es responsable monotributo hay que asegurarse que tenga vat asignado. El documento y
             número de documento deberían ser DNI.

=== modified file 'l10n_ar_invoice/report/invoice.py'
--- l10n_ar_invoice/report/invoice.py	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/report/invoice.py	2014-01-09 17:56:50 +0000
@@ -37,8 +37,13 @@
         f = d.replace('-', '')
         return f
 
+<<<<<<< TREE
     def _cuit_format(self, c):
 	    cuit_string = '{0}-{1}-{2}'.format(c[:2], c[2:-1], c[-1])
+=======
+    def _cuit_format(self, c):
+        cuit_string = '{0}-{1}-{2}'.format(c[:2], c[2:-1], c[-1])
+>>>>>>> MERGE-SOURCE
         return cuit_string
 
     def __init__(self, cr, uid, name, context):

=== modified file 'l10n_ar_invoice/report/invoice.rml'
--- l10n_ar_invoice/report/invoice.rml	2014-01-09 15:19:22 +0000
+++ l10n_ar_invoice/report/invoice.rml	2014-01-09 17:56:50 +0000
@@ -105,7 +105,7 @@
       <para style='tiny'>.</para>
       <para style='tiny'>.</para>
       <nextFrame/>
-      <para style='body-bold' alignment='RIGHT'>CUIT:</para>
+      <para style='body-bold' alignment='RIGHT'>[[ o.partner_id.document_type_id.name or removeParentNode('para') ]]:</para>
       <para style='body-bold' alignment='RIGHT'>Apellido y Nombre / Razón Social:</para>
       <para style='body-bold' alignment='RIGHT'>Domicilio:</para>
       <para style='body-bold' alignment='RIGHT'>.</para>
@@ -113,7 +113,7 @@
       <para style='body-bold' alignment='RIGHT'>Condición de Venta:</para>
       <para style='body-bold' alignment='RIGHT'>Nro. de Remito:</para>
       <nextFrame/>
-      <para style='body'>[[ o.partner_id.printed_vat or removeParentNode('para') ]]</para>
+      <para style='body'>[[ o.partner_id.document_number or removeParentNode('para') ]]</para>
       <para style='body'>[[ o.partner_id.title.name or '' ]] [[ o.partner_id.name ]]</para>
       <para style='body'>[[ o.partner_id.street ]], ( [[ o.partner_id.zip or '----' ]] )</para>
       <para style='body'>[[ o.partner_id.city or '']], [[ o.partner_id.state_id.name or '' ]], [[ o.partner_id.country_id.name or '' ]].</para>

=== modified file 'l10n_ar_invoice/view/invoice_view.xml'
--- l10n_ar_invoice/view/invoice_view.xml	2013-09-30 15:07:23 +0000
+++ l10n_ar_invoice/view/invoice_view.xml	2014-01-09 17:56:50 +0000
@@ -30,7 +30,7 @@
             <field name="arch" type="xml">
                 <data>
                     <field name="journal_id" position="replace">
-			<field name="journal_id" groups="account.group_account_user" on_change="onchange_journal_id(journal_id, context)" widget="many2one"/>
+                        <field name="journal_id" groups="account.group_account_user" on_change="onchange_journal_id(journal_id, context)" widget="many2one"/>
                     </field>
                 </data>
             </field>

=== modified file 'l10n_ar_receipt/account_voucher_search.xml'
--- l10n_ar_receipt/account_voucher_search.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/account_voucher_search.xml	2014-01-09 17:56:50 +0000
@@ -1,36 +1,36 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-	<data>
-
-        <!-- crea Pantalla tipo search cliente para Recibos-->
-        <record id="view_voucher_customer_inherit_filter" model="ir.ui.view">
-            <field name="name">receipt.voucher.customer.inherit.select</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
-            <field name="arch" type="xml">
-                <xpath expr="/search/field[@name='date']" position="after">
-                    <field name="receipt_id" string="Receipts" />
-				</xpath>
-				<xpath expr="/search/group/filter[@string='Status']" position="after">
-					<filter string="Receipts" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Receipts"/>
-				</xpath>
-            </field>
-	    </record>   
-          
-        <!-- Search  Proof-->
-        <record id="view_voucher_filter_vendor_proof_inherit" model="ir.ui.view">
-            <field name="name">voucher.filter.vendor.proof.inherit</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_voucher_filter_vendor_pay"/>
-            <field name="arch" type="xml">
-                <xpath expr="/search/field[@name='date']" position="after">
-                    <field name="receipt_id" string="Payment Voucher" />
-				</xpath>
-				<xpath expr="/search/group/filter[@string='Status']" position="after">
-                    <filter string="Payment Voucher" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Payment Voucher"/>
-				</xpath>
-            </field>
-	    </record>    
-                
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+	<data>
+
+        <!-- crea Pantalla tipo search cliente para Recibos-->
+        <record id="view_voucher_customer_inherit_filter" model="ir.ui.view">
+            <field name="name">receipt.voucher.customer.inherit.select</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
+            <field name="arch" type="xml">
+                <xpath expr="/search/field[@name='date']" position="after">
+                    <field name="receipt_id" string="Receipts" />
+				</xpath>
+				<xpath expr="/search/group/filter[@string='Status']" position="after">
+					<filter string="Receipts" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Receipts"/>
+				</xpath>
+            </field>
+	    </record>   
+          
+        <!-- Search  Proof-->
+        <record id="view_voucher_filter_vendor_proof_inherit" model="ir.ui.view">
+            <field name="name">voucher.filter.vendor.proof.inherit</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_voucher_filter_vendor_pay"/>
+            <field name="arch" type="xml">
+                <xpath expr="/search/field[@name='date']" position="after">
+                    <field name="receipt_id" string="Payment Voucher" />
+				</xpath>
+				<xpath expr="/search/group/filter[@string='Status']" position="after">
+                    <filter string="Payment Voucher" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Payment Voucher"/>
+				</xpath>
+            </field>
+	    </record>    
+                
+    </data>
+</openerp>

=== modified file 'l10n_ar_receipt/account_voucher_view.xml'
--- l10n_ar_receipt/account_voucher_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/account_voucher_view.xml	2014-01-09 17:56:50 +0000
@@ -1,158 +1,158 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-	<data>
-
-                
-		<!-- Tree Recibos (ambos)-->
-
-		<record id="voucher_receipts_form_inherit_view" model="ir.ui.view">
-			<field name="name">receipts.voucher.inherit.view</field>
-			<field name="model">account.voucher</field>
-			<field name="inherit_id" ref="account_voucher.view_voucher_tree"/>
-			<field name="arch" type="xml"> 
-				<xpath expr="/tree/field[@name='state']" position="after">
-                    <field name="receipt_id" string="Receipt"/>
-				</xpath>
-			</field>
-	    </record>	
-        
-        
-				
-        <!-- Search Recibos invisible="not context.get('receipt',True)"-->
-
-		<!-- crea Pantalla tipo search cliente para Recibos-->
-        <record id="view_voucher_customer_inherit_filter" model="ir.ui.view">
-            <field name="name">receipt.voucher.customer.inherit.select</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
-            <field name="arch" type="xml">
-                <xpath expr="/search/field[@name='date']" position="after">
-                    <field name="receipt_id" string="Receipt" />
-				</xpath>
-				<xpath expr="/search/group/filter[@string='Status']" position="after">
-					<filter string="Receipt" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Receipt"/>
-				</xpath>
-            </field>
-	    </record>   
-          
-        <!-- Search  Proof-->
-        <record id="view_voucher_filter_vendor_proof_inherit" model="ir.ui.view">
-            <field name="name">voucher.filter.vendor.proof.inherit</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_voucher_filter_vendor_pay"/>
-            <field name="arch" type="xml">
-                <xpath expr="/search/field[@name='date']" position="after">
-                    <field name="receipt_id" string="Payment Voucher" />
-				</xpath>
-				<xpath expr="/search/group/filter[@string='Status']" position="after">
-                    <filter string="Payment Voucher" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Payment Voucher"/>
-				</xpath>
-            </field>
-	    </record>   
-        
-        
-        <!-- Receipt Form  -->
-        <record id="view_vendor_receipts_pay_form" model="ir.ui.view">
-            <field name="name">account.voucher.form.receipts.pay.inherit</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_vendor_receipt_form"/>
-            <field name="arch" type="xml">
-               <!-- <xpath expr="/sheet/notebook/page[@string='Journal Items']" position="after">
-                    <page string="Receipts Pay" attrs="{'invisible':[('state','in',['draft'])]}" >
-                        <field name="receipt_id" colspan="4" />
-                    </page>
-                </xpath>  -->     
-                <page string="Journal Items" position="after" >
-                    <page string="Receipts" attrs="{'invisible':[('state','in',['draft'])]}" >
-                        <field name="receipt_id" colspan="4" />
-                    </page>
-                </page>
-            </field>
-        </record>
-        
-        <!-- Payment Proof Form-->
-                       <!-- <xpath expr="/sheet/notebook/page[@string='Journal Items']" position="after">
-                    <page string="Payments Proof" attrs="{'invisible':[('state','in',['draft'])]}" >
-                        <field name="receipt_id" colspan="4" />
-                    </page>
-                </xpath> -->
-        <record id="view_sale_proof_pay_form" model="ir.ui.view">
-            <field name="name">account.voucher.form.proof.pay.inherit</field>
-            <field name="model">account.voucher</field>
-            <field name="inherit_id" ref="account_voucher.view_vendor_payment_form"/>
-            <field name="arch" type="xml">
-                <page string="Journal Items" position="after" >
-                    <page string="Payment Proof" attrs="{'invisible':[('state','in',['draft'])]}">
-                        <field name="receipt_id" colspan="4" />
-                    </page>
-                </page>    
-            </field>
-        </record>
-        
-        
-        <!-- Receipt -->
-        
-        <record id="action_receipt_pay_vendor" model="ir.actions.act_window">
-            <field name="name">Customer Debit Payment</field>
-            <field name="res_model">account.voucher</field>
-            <field name="view_type">form</field>
-          <!--  <field name="domain">[('type','=','receipt')]</field>
-            <field name="context">{'type':'receipt'}</field>-->
-            <field name="search_view_id" ref="view_voucher_customer_inherit_filter"/>
-           <!--  <field name="search_view_id" ref="account_voucher.view_voucher_filter_customer_pay"/> -->
-            <field name="view_id" eval="False"/>
-            <field name="target">current</field>
-            <field name="help">Sales payment allows you to register the payments you receive from your customers. In order to record a payment, you must enter the customer, the payment method (=the journal) and the payment amount. OpenERP will propose to you automatically the reconciliation of this payment with the open invoices or sales receipts.</field>
-        </record>
-        
-        <record id="action_receipt_pay_vendor_tree" model="ir.actions.act_window.view">
-            <field eval="1" name="sequence"/>
-            <field name="view_mode">tree</field>
-            <!--  <field name="context">{'type':'receipt'}</field>
-            <field name="domain">[('type','=','receipt')]</field>-->
-            <field name="view_id" ref="voucher_receipts_form_inherit_view"/>  
-            <field name="act_window_id" ref="action_receipt_pay_vendor"/>
-        </record>
-        
-        <record id="action_receipt_pay_vendor_form" model="ir.actions.act_window.view">
-            <field eval="2" name="sequence"/>
-            <field name="view_mode">form</field>
-          <!--    <field name="context">{'type':'receipt'}</field>
-            <field name="domain">[('type','=','receipt')]</field>-->
-            <field name="view_id" ref="view_vendor_receipts_pay_form"/>  
-            <field name="act_window_id" ref="action_receipt_pay_vendor"/> 
-        </record>  
-        
-        <!-- Proof -->
-        <record model="ir.actions.act_window" id="action_review_voucher_list_proof">
-            <field name="name">Vouchers Entries Proof</field>
-            <field name="res_model">account.voucher</field>
-            <field name="view_type">form</field>
-            <field name="view_id" eval="False"/>
-          <!--  <field name="domain">[('type','=','payment')]</field>
-            <field name="context">{'type':'payment'}</field> -->
-           <!-- <field name="search_view_id" ref="account_voucher.view_voucher_filter_sale"/> -->
-            <field name="search_view_id" ref="view_voucher_filter_vendor_proof_inherit"/>
-            <field name="target">current</field>
-        </record> 
-        
-        <record id="action_proof_pay_sale_tree" model="ir.actions.act_window.view">
-            <field eval="1" name="sequence"/>
-            <field name="view_mode">tree</field>
-          <!--  <field name="context">{'type':'payment'}</field>
-            <field name="domain">[('type','=','payment')]</field> -->
-            <field name="view_id" ref="voucher_receipts_form_inherit_view"/>  
-            <field name="act_window_id" ref="action_review_voucher_list_proof"/>
-        </record>
-        
-        <record id="action_proof_pay_vendor_form" model="ir.actions.act_window.view">
-            <field eval="2" name="sequence"/>
-         <!--   <field name="context">{'type':'payment'}</field>
-            <field name="domain">[('type','=','payment')]</field> -->
-            <field name="view_mode">form</field> 
-            <field name="view_id" ref="view_sale_proof_pay_form"/>  
-            <field name="act_window_id" ref="action_review_voucher_list_proof"/> 
-        </record>  
-        
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+	<data>
+
+                
+		<!-- Tree Recibos (ambos)-->
+
+		<record id="voucher_receipts_form_inherit_view" model="ir.ui.view">
+			<field name="name">receipts.voucher.inherit.view</field>
+			<field name="model">account.voucher</field>
+			<field name="inherit_id" ref="account_voucher.view_voucher_tree"/>
+			<field name="arch" type="xml"> 
+				<xpath expr="/tree/field[@name='state']" position="after">
+                    <field name="receipt_id" string="Receipt"/>
+				</xpath>
+			</field>
+	    </record>	
+        
+        
+				
+        <!-- Search Recibos invisible="not context.get('receipt',True)"-->
+
+		<!-- crea Pantalla tipo search cliente para Recibos-->
+        <record id="view_voucher_customer_inherit_filter" model="ir.ui.view">
+            <field name="name">receipt.voucher.customer.inherit.select</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
+            <field name="arch" type="xml">
+                <xpath expr="/search/field[@name='date']" position="after">
+                    <field name="receipt_id" string="Receipt" />
+				</xpath>
+				<xpath expr="/search/group/filter[@string='Status']" position="after">
+					<filter string="Receipt" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Receipt"/>
+				</xpath>
+            </field>
+	    </record>   
+          
+        <!-- Search  Proof-->
+        <record id="view_voucher_filter_vendor_proof_inherit" model="ir.ui.view">
+            <field name="name">voucher.filter.vendor.proof.inherit</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_voucher_filter_vendor_pay"/>
+            <field name="arch" type="xml">
+                <xpath expr="/search/field[@name='date']" position="after">
+                    <field name="receipt_id" string="Payment Voucher" />
+				</xpath>
+				<xpath expr="/search/group/filter[@string='Status']" position="after">
+                    <filter string="Payment Voucher" icon="terp-camera_test" domain="[('receipt_id','!=',False)]"  help="Payments with Payment Voucher"/>
+				</xpath>
+            </field>
+	    </record>   
+        
+        
+        <!-- Receipt Form  -->
+        <record id="view_vendor_receipts_pay_form" model="ir.ui.view">
+            <field name="name">account.voucher.form.receipts.pay.inherit</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_vendor_receipt_form"/>
+            <field name="arch" type="xml">
+               <!-- <xpath expr="/sheet/notebook/page[@string='Journal Items']" position="after">
+                    <page string="Receipts Pay" attrs="{'invisible':[('state','in',['draft'])]}" >
+                        <field name="receipt_id" colspan="4" />
+                    </page>
+                </xpath>  -->     
+                <page string="Journal Items" position="after" >
+                    <page string="Receipts" attrs="{'invisible':[('state','in',['draft'])]}" >
+                        <field name="receipt_id" colspan="4" />
+                    </page>
+                </page>
+            </field>
+        </record>
+        
+        <!-- Payment Proof Form-->
+                       <!-- <xpath expr="/sheet/notebook/page[@string='Journal Items']" position="after">
+                    <page string="Payments Proof" attrs="{'invisible':[('state','in',['draft'])]}" >
+                        <field name="receipt_id" colspan="4" />
+                    </page>
+                </xpath> -->
+        <record id="view_sale_proof_pay_form" model="ir.ui.view">
+            <field name="name">account.voucher.form.proof.pay.inherit</field>
+            <field name="model">account.voucher</field>
+            <field name="inherit_id" ref="account_voucher.view_vendor_payment_form"/>
+            <field name="arch" type="xml">
+                <page string="Journal Items" position="after" >
+                    <page string="Payment Proof" attrs="{'invisible':[('state','in',['draft'])]}">
+                        <field name="receipt_id" colspan="4" />
+                    </page>
+                </page>    
+            </field>
+        </record>
+        
+        
+        <!-- Receipt -->
+        
+        <record id="action_receipt_pay_vendor" model="ir.actions.act_window">
+            <field name="name">Customer Debit Payment</field>
+            <field name="res_model">account.voucher</field>
+            <field name="view_type">form</field>
+          <!--  <field name="domain">[('type','=','receipt')]</field>
+            <field name="context">{'type':'receipt'}</field>-->
+            <field name="search_view_id" ref="view_voucher_customer_inherit_filter"/>
+           <!--  <field name="search_view_id" ref="account_voucher.view_voucher_filter_customer_pay"/> -->
+            <field name="view_id" eval="False"/>
+            <field name="target">current</field>
+            <field name="help">Sales payment allows you to register the payments you receive from your customers. In order to record a payment, you must enter the customer, the payment method (=the journal) and the payment amount. OpenERP will propose to you automatically the reconciliation of this payment with the open invoices or sales receipts.</field>
+        </record>
+        
+        <record id="action_receipt_pay_vendor_tree" model="ir.actions.act_window.view">
+            <field eval="1" name="sequence"/>
+            <field name="view_mode">tree</field>
+            <!--  <field name="context">{'type':'receipt'}</field>
+            <field name="domain">[('type','=','receipt')]</field>-->
+            <field name="view_id" ref="voucher_receipts_form_inherit_view"/>  
+            <field name="act_window_id" ref="action_receipt_pay_vendor"/>
+        </record>
+        
+        <record id="action_receipt_pay_vendor_form" model="ir.actions.act_window.view">
+            <field eval="2" name="sequence"/>
+            <field name="view_mode">form</field>
+          <!--    <field name="context">{'type':'receipt'}</field>
+            <field name="domain">[('type','=','receipt')]</field>-->
+            <field name="view_id" ref="view_vendor_receipts_pay_form"/>  
+            <field name="act_window_id" ref="action_receipt_pay_vendor"/> 
+        </record>  
+        
+        <!-- Proof -->
+        <record model="ir.actions.act_window" id="action_review_voucher_list_proof">
+            <field name="name">Vouchers Entries Proof</field>
+            <field name="res_model">account.voucher</field>
+            <field name="view_type">form</field>
+            <field name="view_id" eval="False"/>
+          <!--  <field name="domain">[('type','=','payment')]</field>
+            <field name="context">{'type':'payment'}</field> -->
+           <!-- <field name="search_view_id" ref="account_voucher.view_voucher_filter_sale"/> -->
+            <field name="search_view_id" ref="view_voucher_filter_vendor_proof_inherit"/>
+            <field name="target">current</field>
+        </record> 
+        
+        <record id="action_proof_pay_sale_tree" model="ir.actions.act_window.view">
+            <field eval="1" name="sequence"/>
+            <field name="view_mode">tree</field>
+          <!--  <field name="context">{'type':'payment'}</field>
+            <field name="domain">[('type','=','payment')]</field> -->
+            <field name="view_id" ref="voucher_receipts_form_inherit_view"/>  
+            <field name="act_window_id" ref="action_review_voucher_list_proof"/>
+        </record>
+        
+        <record id="action_proof_pay_vendor_form" model="ir.actions.act_window.view">
+            <field eval="2" name="sequence"/>
+         <!--   <field name="context">{'type':'payment'}</field>
+            <field name="domain">[('type','=','payment')]</field> -->
+            <field name="view_mode">form</field> 
+            <field name="view_id" ref="view_sale_proof_pay_form"/>  
+            <field name="act_window_id" ref="action_review_voucher_list_proof"/> 
+        </record>  
+        
+    </data>
+</openerp>

=== modified file 'l10n_ar_receipt/proof_secuence.xml'
--- l10n_ar_receipt/proof_secuence.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/proof_secuence.xml	2014-01-09 17:56:50 +0000
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data noupdate="1">
-        <!--Sequence types for Proof Pay -->
-
-        <record  id="seq_type_proof_pay" model="ir.sequence.type">
-            <field name="name">Proof Pay</field>
-            <field name="code">proof.pay</field>
-        </record>
-
-        <!--Sequences for Proof Pay-->
-
-        <record  id="seq_proof_pay" model="ir.sequence">
-            <field name="name">Proof Pay</field>
-            <field name="code">proof.pay</field>
-            <field name="padding">8</field>
-            <field name="prefix">P 0001-</field>
-        </record>
-    </data>
-</openerp>  
- 
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+        <!--Sequence types for Proof Pay -->
+
+        <record  id="seq_type_proof_pay" model="ir.sequence.type">
+            <field name="name">Proof Pay</field>
+            <field name="code">proof.pay</field>
+        </record>
+
+        <!--Sequences for Proof Pay-->
+
+        <record  id="seq_proof_pay" model="ir.sequence">
+            <field name="name">Proof Pay</field>
+            <field name="code">proof.pay</field>
+            <field name="padding">8</field>
+            <field name="prefix">P 0001-</field>
+        </record>
+    </data>
+</openerp>  
+ 

=== modified file 'l10n_ar_receipt/proof_view.xml'
--- l10n_ar_receipt/proof_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/proof_view.xml	2014-01-09 17:56:50 +0000
@@ -1,89 +1,89 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<openerp>
-    <data>
-        <!-- Suppliers-->
-  		<!-- crea Pantalla tipo lista para Payment Proof-->
-		<record model="ir.ui.view" id="proof_tree_view">
-			<field name="name">receipt.receipt.proof.tree</field>
-			<field name="model">receipt.receipt</field>
-			<field name="arch" type="xml"> 
-				<tree string="Payment Vouchers List" >
-                        <field name="date"/>
-                        <field name="name"/>
-                        <field name="receiptbook_id"/>
-                        <field name="partner_id"/>
-                        <field name="total_ammount"/>
-				</tree>	
-			</field>
-	    </record>	
-		
-	<!-- crea Pantalla tipo Formulario para Proof-->
-		<record model="ir.ui.view" id="proof_form_view">
-			<field name="name">receipt.receipt.proof.form</field>
-			<field name="model">receipt.receipt</field>
-			<field name="arch" type="xml"> 
-				<form string="Payment Vouchers List">
-                    <field name="date" />
-					<field name="name"/>
-                    <field name="receiptbook_id" />
-                    <field name="partner_id" colspan="1" />
-                    <field name="total_ammount"/>
-                    <field name="voucher_ids" colspan="4" nolabel="1" />
-                    
-				</form>	
-			</field>
-	    </record>		
-	  
-        <record id="view_proof_filter" model="ir.ui.view">
-            <field name="name">receipt.receipt.proof.select</field>
-            <field name="model">receipt.receipt</field>
-            <field name="priority">1</field>
-            <field name="arch" type="xml">
-                <search string="Search Payment Vouchers">
-                    <filter string="Payment Vouchers"
-						icon="terp-partner"
-						domain="[('receipt_type','=','payment')]"
-						name="pay_proof"
-						help="Payment Vouchers of Suppliers"/>
-                    <field name="name" />
-                    <field name="partner_id"/>
-                    <separator  colspan="2"/>
-                </search>
-            </field>
-        </record>   
-        
-	    	    	
-	<!-- crea el action invocado por el submenu Proof-->
-      <record model="ir.actions.act_window" id="proof_list_action">
-		<field name="name">proof</field>
-		<field name="res_model">receipt.receipt</field>
-		<field name="view_type">form</field>
-		<field name="view_mode">tree,form</field>
-        <field name="search_view_id" ref="view_proof_filter"/>
-        <field name="context">{'search_default_pay_proof':1}</field>
-	</record>	
-    
-    <record id="action_proof_list_tree" model="ir.actions.act_window.view">
-            <field eval="1" name="sequence"/>
-            <field name="view_mode">tree</field>
-            <field name="view_id" ref="proof_tree_view"/>  
-            <field name="act_window_id" ref="proof_list_action"/>
-    </record>
-        
-    <record id="action_proof_list_form" model="ir.actions.act_window.view">
-            <field eval="2" name="sequence"/>
-            <field name="view_mode">form</field> 
-            <field name="view_id" ref="proof_form_view"/>  
-            <field name="act_window_id" ref="proof_list_action"/> 
-    </record>  
-                
-	    
-		<!-- crea el sub menu para el Proof--> 
-		<menuitem id="proof_menu" name="Payment Vouchers" string= "Payment Vouchers Proof" sequence="100" 
-            parent="account.menu_finance_payables" action="proof_list_action" icon="STOCK_JUSTIFY_FILL" />	
-            
-
-                                            
-    </data>
-</openerp>                    
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+    <data>
+        <!-- Suppliers-->
+  		<!-- crea Pantalla tipo lista para Payment Proof-->
+		<record model="ir.ui.view" id="proof_tree_view">
+			<field name="name">receipt.receipt.proof.tree</field>
+			<field name="model">receipt.receipt</field>
+			<field name="arch" type="xml"> 
+				<tree string="Payment Vouchers List" >
+                        <field name="date"/>
+                        <field name="name"/>
+                        <field name="receiptbook_id"/>
+                        <field name="partner_id"/>
+                        <field name="total_ammount"/>
+				</tree>	
+			</field>
+	    </record>	
+		
+	<!-- crea Pantalla tipo Formulario para Proof-->
+		<record model="ir.ui.view" id="proof_form_view">
+			<field name="name">receipt.receipt.proof.form</field>
+			<field name="model">receipt.receipt</field>
+			<field name="arch" type="xml"> 
+				<form string="Payment Vouchers List">
+                    <field name="date" />
+					<field name="name"/>
+                    <field name="receiptbook_id" />
+                    <field name="partner_id" colspan="1" />
+                    <field name="total_ammount"/>
+                    <field name="voucher_ids" colspan="4" nolabel="1" />
+                    
+				</form>	
+			</field>
+	    </record>		
+	  
+        <record id="view_proof_filter" model="ir.ui.view">
+            <field name="name">receipt.receipt.proof.select</field>
+            <field name="model">receipt.receipt</field>
+            <field name="priority">1</field>
+            <field name="arch" type="xml">
+                <search string="Search Payment Vouchers">
+                    <filter string="Payment Vouchers"
+						icon="terp-partner"
+						domain="[('receipt_type','=','payment')]"
+						name="pay_proof"
+						help="Payment Vouchers of Suppliers"/>
+                    <field name="name" />
+                    <field name="partner_id"/>
+                    <separator  colspan="2"/>
+                </search>
+            </field>
+        </record>   
+        
+	    	    	
+	<!-- crea el action invocado por el submenu Proof-->
+      <record model="ir.actions.act_window" id="proof_list_action">
+		<field name="name">proof</field>
+		<field name="res_model">receipt.receipt</field>
+		<field name="view_type">form</field>
+		<field name="view_mode">tree,form</field>
+        <field name="search_view_id" ref="view_proof_filter"/>
+        <field name="context">{'search_default_pay_proof':1}</field>
+	</record>	
+    
+    <record id="action_proof_list_tree" model="ir.actions.act_window.view">
+            <field eval="1" name="sequence"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="proof_tree_view"/>  
+            <field name="act_window_id" ref="proof_list_action"/>
+    </record>
+        
+    <record id="action_proof_list_form" model="ir.actions.act_window.view">
+            <field eval="2" name="sequence"/>
+            <field name="view_mode">form</field> 
+            <field name="view_id" ref="proof_form_view"/>  
+            <field name="act_window_id" ref="proof_list_action"/> 
+    </record>  
+                
+	    
+		<!-- crea el sub menu para el Proof--> 
+		<menuitem id="proof_menu" name="Payment Vouchers" string= "Payment Vouchers Proof" sequence="100" 
+            parent="account.menu_finance_payables" action="proof_list_action" icon="STOCK_JUSTIFY_FILL" />	
+            
+
+                                            
+    </data>
+</openerp>                    

=== modified file 'l10n_ar_receipt/receipt_secuence.xml'
--- l10n_ar_receipt/receipt_secuence.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/receipt_secuence.xml	2014-01-09 17:56:50 +0000
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data noupdate="1">
-        <!--Sequence types for Receip Pay -->
-
-        <record  id="seq_type_receipt_pay" model="ir.sequence.type">
-            <field name="name">Receip Pay</field>
-            <field name="code">receipt.pay</field>
-        </record>
-
-        <!--Sequences for Receip Pay-->
-
-        <record  id="seq_receipt_pay" model="ir.sequence">
-            <field name="name">Receip Pay</field>
-            <field name="code">receipt.pay</field>
-            <field name="padding">8</field>
-            <field name="prefix">R 0001-</field>
-        </record>
-    </data>
-</openerp>  
- 
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+        <!--Sequence types for Receip Pay -->
+
+        <record  id="seq_type_receipt_pay" model="ir.sequence.type">
+            <field name="name">Receip Pay</field>
+            <field name="code">receipt.pay</field>
+        </record>
+
+        <!--Sequences for Receip Pay-->
+
+        <record  id="seq_receipt_pay" model="ir.sequence">
+            <field name="name">Receip Pay</field>
+            <field name="code">receipt.pay</field>
+            <field name="padding">8</field>
+            <field name="prefix">R 0001-</field>
+        </record>
+    </data>
+</openerp>  
+ 

=== modified file 'l10n_ar_receipt/receipt_view.xml'
--- l10n_ar_receipt/receipt_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/receipt_view.xml	2014-01-09 17:56:50 +0000
@@ -1,91 +1,91 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<openerp>
-    <data>
-        <!-- customer-->
-  		<!-- crea Pantalla tipo lista para Receipt -->
-		<record model="ir.ui.view" id="receipts_tree_view">
-			<field name="name">receipt.receipt.tree</field>
-			<field name="model">receipt.receipt</field>
-			<field name="arch" type="xml"> 
-				<tree string="Receipts List" >
-                        <field name="date" />
-                        <field name="name" />
-                        <field name="receiptbook_id" />
-                        <field name="partner_id" />
-                        <field name="total_ammount" />
-                        <field name="receipt_type" invisible ="1" />  
-				</tree>	
-			</field>
-	    </record>	
-		
-	<!-- crea Pantalla tipo Formulario para Receipt -->
-		<record model="ir.ui.view" id="receipts_form_view">
-			<field name="name">receipt.receipt.form</field>
-			<field name="model">receipt.receipt</field>
-			<field name="arch" type="xml"> 
-				<form string="Receipts List"  >
-                    <group string="Receipt List" >
-                        <field name="date" />
-                        <field name="name"/>
-                        <field name="receiptbook_id" />
-                        <field name="partner_id" colspan="1" />
-                        <field name="total_ammount"/>
-                        <field name="voucher_ids" colspan="4" nolabel="1" />
-                    </group> 
-				</form>	
-			</field>
-	    </record>		
-	  
-        <record id="view_receipt_filter" model="ir.ui.view">
-            <field name="name">receipt.receipt.select</field>
-            <field name="model">receipt.receipt</field>
-            <field name="priority">1</field>
-            <field name="arch" type="xml">
-                <search string="Search Receipts">
-                    <filter string="Receipts"
-						icon="terp-partner"
-						domain="[('receipt_type','=','receipt')]"
-						name="receipts"
-						help="customer Receipts"/>
-                    <field name="name" />
-                    <field name="partner_id"/>
-                    <separator  colspan="2"/>
-                </search>
-            </field>
-        </record>   
-        
-	    	    	
-	<!-- crea el action invocado por el submenu Receipt-->
-      <record model="ir.actions.act_window" id="receipts_list_action">
-		<field name="name">receipt</field>
-		<field name="res_model">receipt.receipt</field>
-		<field name="view_type">form</field>
-		<field name="view_mode">tree,form</field>
-        <field name="search_view_id" ref="view_receipt_filter"/>
-        <field name="context">{'search_default_receipts':1}</field>
-	</record>	
-	
-        <record id="action_receipt_list_tree" model="ir.actions.act_window.view">
-            <field eval="1" name="sequence"/>
-            <field name="view_mode">tree</field>
-            <field name="view_id" ref="receipts_tree_view"/>  
-            <field name="act_window_id" ref="receipts_list_action"/>
-    </record>
-        
-    <record id="action_receipt_list_form" model="ir.actions.act_window.view">
-            <field eval="2" name="sequence"/>
-            <field name="view_mode">form</field> 
-            <field name="view_id" ref="receipts_form_view"/>  
-            <field name="act_window_id" ref="receipts_list_action"/> 
-    </record>  
-	    
-		<!-- crea el sub menu para el Receipt--> 
-		<menuitem id="receipt_menu" name="Receipt" sequence="100" 
-            parent="account.menu_finance_receivables" action="receipts_list_action" icon="STOCK_JUSTIFY_FILL" />	
-            
-        
-
-                                            
-    </data>
-</openerp>                    
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+    <data>
+        <!-- customer-->
+  		<!-- crea Pantalla tipo lista para Receipt -->
+		<record model="ir.ui.view" id="receipts_tree_view">
+			<field name="name">receipt.receipt.tree</field>
+			<field name="model">receipt.receipt</field>
+			<field name="arch" type="xml"> 
+				<tree string="Receipts List" >
+                        <field name="date" />
+                        <field name="name" />
+                        <field name="receiptbook_id" />
+                        <field name="partner_id" />
+                        <field name="total_ammount" />
+                        <field name="receipt_type" invisible ="1" />  
+				</tree>	
+			</field>
+	    </record>	
+		
+	<!-- crea Pantalla tipo Formulario para Receipt -->
+		<record model="ir.ui.view" id="receipts_form_view">
+			<field name="name">receipt.receipt.form</field>
+			<field name="model">receipt.receipt</field>
+			<field name="arch" type="xml"> 
+				<form string="Receipts List"  >
+                    <group string="Receipt List" >
+                        <field name="date" />
+                        <field name="name"/>
+                        <field name="receiptbook_id" />
+                        <field name="partner_id" colspan="1" />
+                        <field name="total_ammount"/>
+                        <field name="voucher_ids" colspan="4" nolabel="1" />
+                    </group> 
+				</form>	
+			</field>
+	    </record>		
+	  
+        <record id="view_receipt_filter" model="ir.ui.view">
+            <field name="name">receipt.receipt.select</field>
+            <field name="model">receipt.receipt</field>
+            <field name="priority">1</field>
+            <field name="arch" type="xml">
+                <search string="Search Receipts">
+                    <filter string="Receipts"
+						icon="terp-partner"
+						domain="[('receipt_type','=','receipt')]"
+						name="receipts"
+						help="customer Receipts"/>
+                    <field name="name" />
+                    <field name="partner_id"/>
+                    <separator  colspan="2"/>
+                </search>
+            </field>
+        </record>   
+        
+	    	    	
+	<!-- crea el action invocado por el submenu Receipt-->
+      <record model="ir.actions.act_window" id="receipts_list_action">
+		<field name="name">receipt</field>
+		<field name="res_model">receipt.receipt</field>
+		<field name="view_type">form</field>
+		<field name="view_mode">tree,form</field>
+        <field name="search_view_id" ref="view_receipt_filter"/>
+        <field name="context">{'search_default_receipts':1}</field>
+	</record>	
+	
+        <record id="action_receipt_list_tree" model="ir.actions.act_window.view">
+            <field eval="1" name="sequence"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="receipts_tree_view"/>  
+            <field name="act_window_id" ref="receipts_list_action"/>
+    </record>
+        
+    <record id="action_receipt_list_form" model="ir.actions.act_window.view">
+            <field eval="2" name="sequence"/>
+            <field name="view_mode">form</field> 
+            <field name="view_id" ref="receipts_form_view"/>  
+            <field name="act_window_id" ref="receipts_list_action"/> 
+    </record>  
+	    
+		<!-- crea el sub menu para el Receipt--> 
+		<menuitem id="receipt_menu" name="Receipt" sequence="100" 
+            parent="account.menu_finance_receivables" action="receipts_list_action" icon="STOCK_JUSTIFY_FILL" />	
+            
+        
+
+                                            
+    </data>
+</openerp>                    

=== modified file 'l10n_ar_receipt/receiptbook_view.xml'
--- l10n_ar_receipt/receiptbook_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/receiptbook_view.xml	2014-01-09 17:56:50 +0000
@@ -1,78 +1,78 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record id="view_receipt_receiptbook_search" model="ir.ui.view">
-            <field name="name">receipt.receiptbook.search</field>
-            <field name="model">receipt.receiptbook</field>
-            <field name="arch" type="xml">
-                <search string="Receipt Books">
-                    <field name="name"/>
-                    <field name="state"/>
-                </search>
-            </field>
-        </record>
-
-        <record id="view_receipt_receiptbook_tree" model="ir.ui.view">
-            <field name="name">receipt.receiptbook.tree</field>
-            <field name="model">receipt.receiptbook</field>
-            <field name="arch" type="xml">
-                <tree string="Receipt Books">
-                    <field name="name"/>
-                    <field name="range_fix"/>
-                    <field name="range_desde"/>
-                    <field name="range_hasta"/>
-                    <field name="actual_number"/>
-                    <field name="receipt_type"/>
-                    <field name="type_custsupl"/>
-                    <field name="state"/>
-                </tree>
-            </field>
-        </record>
-
-
-        <record id="view_receipt_receiptbook_form" model="ir.ui.view">
-            <field name="name">receipt.receiptbook.form</field>
-            <field name="model">receipt.receiptbook</field>
-            <field name="arch" type="xml">
-                <form string="Receipt Books" version="7.0"> 
-                <header string="Receipt Books">
-                        <button name="wkf_active" string="In Use"  states="draft"/>
-                        <button name="wkf_used" string="Used"  states="active"/>
-                    <field name="state" widget="statusbar" statusbar_visible="draft,active,used" statusbar_colors='{"active":"blue"}'/>
-                </header>
-                <sheet string="Receipt Books">
-                    <group col="4">
-                        <field name="name"/>
-                        <group>  
-                            <field name="receipt_type" />
-                            <field name="type_custsupl" />
-                        </group>
-                    </group>
-                    <group string="Ranges" colspan="2" >
-                        <field name="range_fix" placeholder="0000"/>  
-                        <field name="range_desde" on_change="onchange_desde(range_desde,actual_number)"/>
-                        <field name="range_hasta" on_change="onchange_hasta(range_desde,range_hasta)"/>
-                    </group>
-                    <group  colspan="4" col="2" >   
-                        <field name="actual_number"  attrs="{'invisible':[('receipt_type','=','manual')]}"/>
-                    </group>
-                </sheet>
-                </form>
-            </field>
-        </record>
-        
-
-
-        <record id="action_receipt_receiptbook_form" model="ir.actions.act_window">
-            <field name="name">Receiptbooks</field>
-            <field name="res_model">receipt.receiptbook</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="search_view_id" ref="view_receipt_receiptbook_search"/>
-        </record>
-        
-       <menuitem action="action_receipt_receiptbook_form" id="menu_action_receipt_receiptbook_form" parent="account.menu_configuration_misc" sequence="100"/>
- 
-    </data>
-</openerp>        
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="view_receipt_receiptbook_search" model="ir.ui.view">
+            <field name="name">receipt.receiptbook.search</field>
+            <field name="model">receipt.receiptbook</field>
+            <field name="arch" type="xml">
+                <search string="Receipt Books">
+                    <field name="name"/>
+                    <field name="state"/>
+                </search>
+            </field>
+        </record>
+
+        <record id="view_receipt_receiptbook_tree" model="ir.ui.view">
+            <field name="name">receipt.receiptbook.tree</field>
+            <field name="model">receipt.receiptbook</field>
+            <field name="arch" type="xml">
+                <tree string="Receipt Books">
+                    <field name="name"/>
+                    <field name="range_fix"/>
+                    <field name="range_desde"/>
+                    <field name="range_hasta"/>
+                    <field name="actual_number"/>
+                    <field name="receipt_type"/>
+                    <field name="type_custsupl"/>
+                    <field name="state"/>
+                </tree>
+            </field>
+        </record>
+
+
+        <record id="view_receipt_receiptbook_form" model="ir.ui.view">
+            <field name="name">receipt.receiptbook.form</field>
+            <field name="model">receipt.receiptbook</field>
+            <field name="arch" type="xml">
+                <form string="Receipt Books" version="7.0"> 
+                <header string="Receipt Books">
+                        <button name="wkf_active" string="In Use"  states="draft"/>
+                        <button name="wkf_used" string="Used"  states="active"/>
+                    <field name="state" widget="statusbar" statusbar_visible="draft,active,used" statusbar_colors='{"active":"blue"}'/>
+                </header>
+                <sheet string="Receipt Books">
+                    <group col="4">
+                        <field name="name"/>
+                        <group>  
+                            <field name="receipt_type" />
+                            <field name="type_custsupl" />
+                        </group>
+                    </group>
+                    <group string="Ranges" colspan="2" >
+                        <field name="range_fix" placeholder="0000"/>  
+                        <field name="range_desde" on_change="onchange_desde(range_desde,actual_number)"/>
+                        <field name="range_hasta" on_change="onchange_hasta(range_desde,range_hasta)"/>
+                    </group>
+                    <group  colspan="4" col="2" >   
+                        <field name="actual_number"  attrs="{'invisible':[('receipt_type','=','manual')]}"/>
+                    </group>
+                </sheet>
+                </form>
+            </field>
+        </record>
+        
+
+
+        <record id="action_receipt_receiptbook_form" model="ir.actions.act_window">
+            <field name="name">Receiptbooks</field>
+            <field name="res_model">receipt.receiptbook</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="search_view_id" ref="view_receipt_receiptbook_search"/>
+        </record>
+        
+       <menuitem action="action_receipt_receiptbook_form" id="menu_action_receipt_receiptbook_form" parent="account.menu_configuration_misc" sequence="100"/>
+ 
+    </data>
+</openerp>        

=== modified file 'l10n_ar_receipt/report/report_view.xml'
--- l10n_ar_receipt/report/report_view.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/report/report_view.xml	2014-01-09 17:56:50 +0000
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<openerp>
-    <data>
-        <report id="receipt_pay_report" string="Print Receipt Pay"
-            model="receipt.receipt" name="receipt.pay.report"
-            rml="receipt_pay/report/receipt_pay_print.rml" />
-    </data>
-</openerp>
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <report id="receipt_pay_report" string="Print Receipt Pay"
+            model="receipt.receipt" name="receipt.pay.report"
+            rml="receipt_pay/report/receipt_pay_print.rml" />
+    </data>
+</openerp>

=== modified file 'l10n_ar_receipt/workflow_receiptbook.xml'
--- l10n_ar_receipt/workflow_receiptbook.xml	2013-10-05 18:19:06 +0000
+++ l10n_ar_receipt/workflow_receiptbook.xml	2014-01-09 17:56:50 +0000
@@ -1,49 +1,49 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-    <data>
-
-        <record id="receipt_receiptbook" model="workflow">
-            <field name="name">Receipt Receiptbook</field>
-            <field name="osv">receipt.receiptbook</field>
-            <field name="on_create">True</field>
-        </record>
-
-    <!-- Activities -->
-    
-        <record id="act_draft" model="workflow.activity">
-            <field name="wkf_id" ref="receipt_receiptbook"/>
-            <field name="flow_start">True</field>
-            <field name="name">draft</field>
-        </record>
-        
-       <record id="act_active" model="workflow.activity">
-            <field name="wkf_id" ref="receipt_receiptbook"/>
-            <field name="name">active</field>
-            <field name="kind">function</field>
-            <field name="action">wkf_active()</field>
-        </record>
-        
-        <record id="act_used" model="workflow.activity">
-            <field name="wkf_id" ref="receipt_receiptbook"/>
-            <field name="name">used</field>
-            <field name="kind">function</field>
-            <field name="flow_stop">True</field>
-            <field name="action">wkf_used()</field>
-        </record>
-  
-    <!-- Transition -->
-    
-        <record id="trans_draft_active" model="workflow.transition">
-            <field name="act_from" ref="act_draft"/>
-            <field name="act_to" ref="act_active"/>
-            <field name="signal">wkf_active</field>
-        </record>
-        
-        <record id="trans_active_used" model="workflow.transition">
-            <field name="act_from" ref="act_active"/>
-            <field name="act_to" ref="act_used"/>
-            <field name="signal">wkf_used</field>
-        </record>
-
-    </data>
-</openerp>
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="receipt_receiptbook" model="workflow">
+            <field name="name">Receipt Receiptbook</field>
+            <field name="osv">receipt.receiptbook</field>
+            <field name="on_create">True</field>
+        </record>
+
+    <!-- Activities -->
+    
+        <record id="act_draft" model="workflow.activity">
+            <field name="wkf_id" ref="receipt_receiptbook"/>
+            <field name="flow_start">True</field>
+            <field name="name">draft</field>
+        </record>
+        
+       <record id="act_active" model="workflow.activity">
+            <field name="wkf_id" ref="receipt_receiptbook"/>
+            <field name="name">active</field>
+            <field name="kind">function</field>
+            <field name="action">wkf_active()</field>
+        </record>
+        
+        <record id="act_used" model="workflow.activity">
+            <field name="wkf_id" ref="receipt_receiptbook"/>
+            <field name="name">used</field>
+            <field name="kind">function</field>
+            <field name="flow_stop">True</field>
+            <field name="action">wkf_used()</field>
+        </record>
+  
+    <!-- Transition -->
+    
+        <record id="trans_draft_active" model="workflow.transition">
+            <field name="act_from" ref="act_draft"/>
+            <field name="act_to" ref="act_active"/>
+            <field name="signal">wkf_active</field>
+        </record>
+        
+        <record id="trans_active_used" model="workflow.transition">
+            <field name="act_from" ref="act_active"/>
+            <field name="act_to" ref="act_used"/>
+            <field name="signal">wkf_used</field>
+        </record>
+
+    </data>
+</openerp>

=== modified file 'l10n_ar_wsafip_fe/AUTHORS'
--- l10n_ar_wsafip_fe/AUTHORS	2014-01-09 15:19:22 +0000
+++ l10n_ar_wsafip_fe/AUTHORS	2014-01-09 17:56:50 +0000
@@ -34,6 +34,6 @@
 ##############################################################################
 
 Cristian S. Rocha <cristian.rocha@xxxxxxxxxxx>
-Darío De Giacomo <dariokdg@xxxxxxxxx>
+Darío Kevin De Giacomo <dariokdg@xxxxxxxxx>
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'l10n_ar_wsafip_fe/__openerp__.py'
=== modified file 'l10n_ar_wsafip_fe/invoice.py'
--- l10n_ar_wsafip_fe/invoice.py	2014-01-08 19:20:44 +0000
+++ l10n_ar_wsafip_fe/invoice.py	2014-01-09 17:56:50 +0000
@@ -35,14 +35,25 @@
         return parents
 
 def _calc_concept(product_types):
-    if product_types == set(['consu']):
+    
+    if product_types == set():
+        concept = False
+    elif product_types == set(['consu']):
+        concept = '1'
+    elif product_types == set(['product']):
+        concept = '1'
+    elif product_types == set(['consu','product']):
         concept = '1'
     elif product_types == set(['service']):
         concept = '2'
     elif product_types == set(['consu','service']):
         concept = '3'
+    elif product_types == set(['product','service']):
+        concept = '3'
+    elif product_types == set(['consu','product','service']):
+        concept = '3' 
     else:
-        concept = False
+        concept = '3'
     return concept
 
 class invoice(osv.osv):
@@ -75,6 +86,8 @@
         'afip_cae': fields.char('CAE number', size=24),
         'afip_cae_due': fields.date('CAE due'),
         'afip_error_id': fields.many2one('afip.wsfe_error', 'AFIP Status', readonly=True),
+        'afip_soap_request': fields.text('Message Request'),
+        'afip_soap_response': fields.text('SOAP Message Response'),
     }
 
     _defaults = {
@@ -247,7 +260,7 @@
             Requests[conn.id][inv.id]=dict( (k,v) for k,v in {
                 'CbteTipo': journal.journal_class_id.afip_code,
                 'PtoVta': journal.point_of_sale,
-                'Concepto': inv.afip_concept,
+                'Concepto': inv.afip_concept or 3,
                 'DocTipo': inv.partner_id.document_type_id.afip_code or '99',
                 'DocNro': int(inv.partner_id.document_type_id.afip_code is not None and inv.partner_id.document_number),
                 'CbteDesde': invoice_number,
@@ -279,6 +292,8 @@
                     self.write(cr, uid, Inv2id[k], {
                         'afip_cae': v['CAE'],
                         'afip_cae_due': v['CAEFchVto'],
+                        'afip_soap_request': v['Request'],
+                        'afip_soap_response': v['Response'],
                     })
                 else:
                     # Muestra un mensaje de error por la factura con error.
@@ -291,172 +306,6 @@
 
         return True
 
-
-    def _do_request(self, request_dict):
-
-        Details = {}
-        Auths = {}
-        Invoice = {}
-        BatchNum = {}
-
-        if False:
-            # New invoice request, header and details
-            Request = FECAESolicitarSoapIn().new_FeCAEReq()
-            Header  = Request.new_FeCabReq()
-            Details = Request.new_FeDetReq()
-            Detail  = Details.new_FECAEDetRequest() # One for invoice
-
-            # Create header
-            Header.set_element_CantReg(1)
-            Header.set_element_CbteTipo(journal.journal_class_id.afip_code)
-            Header.set_element_PtoVta(journal.point_of_sale)
-
-            # Take the last number of the "number".
-            # Could not work if your number have not 8 digits.
-            invoice_number = int(re_number.search(inv.number).group())
-
-            # Partner data
-            if inv.partner_id.document_type and inv.partner_id.document_number:
-                # CUIT
-                Detalle.set_element_tipo_doc(inv.partner_id.document_type.afip_code)
-                Detalle.set_element_nro_doc(int(inv.partner_id.document_number))
-            else:
-                raise osv.except_osv(_(u'Invoice error'),
-                                     _(u'The customer needs to identify with a document to billing.'))
-
-            # Document information
-            Detalle.set_element_tipo_cbte(journal.journal_class_id.afip_code)
-            Detalle.set_element_punto_vta(journal.point_of_sale)
-            # Invoice number. Could not work if you print more than one page for an invoice.
-            Detalle.set_element_cbt_desde(invoice_number)
-            Detalle.set_element_cbt_hasta(invoice_number)
-            # Values: REVISAR!!!
-            Detalle.set_element_imp_total(inv.amount_total)
-            Detalle.set_element_imp_tot_conc(0)
-            Detalle.set_element_imp_neto(inv.amount_untaxed)
-            Detalle.set_element_impto_liq(inv.amount_tax)
-            Detalle.set_element_impto_liq_rni(0)
-            Detalle.set_element_imp_op_ex(0)
-            # Dates
-            Detalle.set_element_fecha_cbte(inv.date_invoice.replace('-',''))
-            if inv.date_due:
-                Detalle.set_element_fecha_venc_pago(inv.date_due.replace('-',''))
-            # For service type
-            if inv.afip_service_start:
-                Detalle.set_element_fecha_serv_desde(inv.afip_service_start.replace('-',''))
-                Detalle.set_element_fecha_serv_hasta(inv.afip_service_end.replace('-',''))
-                is_service = True
-            else:
-                is_service = False
-
-            # Store detail
-            name = ("<%s>_!" if is_service else "<%s>") % auth.name
-            if not auth in Details:
-                Details[name] = []
-                Auths[name] = auth
-            Details[name].append(Detalle)
-            Invoice[invoice_number] = inv
-            BatchNum[name] = inv.afip_batch_number
-
-        # Now work for authority entities and send request.
-        req_id = 0
-        for name in Details:
-            auth = Auths[name]
-            details = Details[name]
-
-            seq_id = BatchNum[name]
-            batch_id = int(seq_id)
-
-            request = FEAutRequestSoapIn()
-            request = auth.set_auth_request(request)
-
-            Fer = request.new_Fer()
-            Fecr = Fer.new_Fecr()
-            Fecr.set_element_id(batch_id) # Request id
-            Fecr.set_element_cantidadreg(len(details))
-            Fecr.set_element_presta_serv(1 if name[-3:] == '>_!' else 0)
-            Fer.Fecr = Fecr
-
-            Fedr = Fer.new_Fedr()
-            Fedr.FEDetalleRequest = details
-            Fer.Fedr = Fedr
-
-            request.Fer = Fer
-
-            response = get_bind(auth.server_id).FEAutRequest(request)
-
-            if response._FEAutRequestResult._RError._percode == 0 and response._FEAutRequestResult._FecResp._resultado in [ 'P', 'A' ]:
-                # Not error
-                error_message = []
-                for i in range(response._FEAutRequestResult._FecResp._cantidadreg):
-                    response_id = response._FEAutRequestResult._FecResp._id # ID de lote.
-                    r = response._FEAutRequestResult._FedResp._FEDetalleResponse[i]
-
-                    afip_error_ids = wsfe_error_obj.search(cr, uid, [('code','in',r._motivo.split(';'))])
-                    afip_error = wsfe_error_obj.browse(cr, uid, afip_error_ids)
-                    afip_message = '; '.join([ err.description for err in afip_error ])
-                    error_message.append(_('Invoice %s: %s.') % (r._cbt_desde, afip_message))
-
-                    _logger.error(_('Processed document %s-%s. AFIP message: %s.') % (r._cbt_desde, r._cbt_hasta, afip_message))
-
-                    if r._cbt_desde not in Invoice:
-                        _logger.error(_('Document sequence is not syncronized with AFIP. Afip return %i as valid.') % r._cbt_desde)
-                        _logger.error(_('Expected sequences: %s.') % repr(Invoice.keys()))
-                        continue
-
-                    if r._cae is None:
-                        _logger.error(_('Document have not CAE assigned.'))
-                        return False 
-
-                    self.write(cr, uid, Invoice[r._cbt_desde].id, 
-                               {'afip_cae': r._cae,
-                                'afip_cae_due': r._fecha_vto,
-                                'afip_batch_number':response_id,
-                                'afip_result': r._resultado,
-                                'afip_error_id': afip_error_ids[0],
-                               })
-            elif response._FEAutRequestResult._FecResp is None:
-                raise osv.except_osv(_('AFIP error'),
-                                     _(u'Ocurrió un error en el AFIP (%i): %s') % 
-                                     (response._FEAutRequestResult._RError._percode,
-                                      response._FEAutRequestResult._RError._perrmsg,
-                                     ))
-            elif response._FEAutRequestResult._FecResp is not None:
-                response_id = response._FEAutRequestResult._FecResp._id # ID de lote.
-                response_cuit = response._FEAutRequestResult._FecResp._cuit
-                response_fecha_cae = response._FEAutRequestResult._FecResp._fecha_cae
-                response_cant_reg = response._FEAutRequestResult._FecResp._cantidadreg
-                response_resultado = response._FEAutRequestResult._FecResp._resultado
-                response_motivo = response._FEAutRequestResult._FecResp._motivo
-                response_reproceso = response._FEAutRequestResult._FecResp._reproceso
-
-                _logger.error(_('AFIP dont approve some document. Global Reason: %s') % response_motivo)
-
-                error_message = []
-                for i in range(response._FEAutRequestResult._FecResp._cantidadreg):
-                    r = response._FEAutRequestResult._FedResp._FEDetalleResponse[i]
-
-                    afip_error_ids = wsfe_error_obj.search(cr, uid, [('code','in',r._motivo.split(';'))])
-                    afip_error = wsfe_error_obj.browse(cr, uid, afip_error_ids)
-                    afip_message = '; '.join([ err.description for err in afip_error ])
-                    error_message.append(_('Invoice %s: %s.') % (r._cbt_desde, afip_message))
-
-                    _logger.error(_('AFIP dont approve the document %s-%s. Reason: %s.') % (r._cbt_desde, r._cbt_hasta, afip_message))
-
-                    if r._cbt_desde not in Invoice:
-                        _logger.error(_('Document sequence is not syncronized with AFIP. Afip return %i as valid.') % r._cbt_desde)
-                        _logger.error(_('Expected sequences: %s.') % repr(Invoice.keys()))
-                        return False
-
-                # Esto deberia ser un mensaje al usuario, asi termina de procesar todas las facturas.
-                raise osv.except_osv(_('AFIP error'),
-                                     _(u'Ocurriró un error en el AFIP (%i: %s).<br/>\n %s.\n') % 
-                                     (response._FEAutRequestResult._RError._percode,
-                                      response._FEAutRequestResult._RError._perrmsg,
-                                      '<br/>\n'.join(error_message),
-                                     ))
-        pass
-
     def invoice_print(self, cr, uid, ids, context=None):
         '''
         This function prints the invoice and mark it as sent, so that we can see more easily the next step of the workflow
@@ -526,9 +375,16 @@
         product_types = set()
 
         for act, opt, data in invoice_line:
+<<<<<<< TREE
             product_id = data and data.get('product_id', False)
             if product_id:
                 product_types.add(product_obj.read(cr, uid, product_id, ['type'])['type'])
+=======
+            if data:
+                product_id = data and data.get('product_id', False)
+                if product_id:
+                    product_types.add(product_obj.read(cr, uid, product_id, ['type'])['type'])
+>>>>>>> MERGE-SOURCE
                 
         res['value'] = { 'afip_concept': _calc_concept(product_types) }
         return res

=== modified file 'l10n_ar_wsafip_fe/report/invoice.rml'
--- l10n_ar_wsafip_fe/report/invoice.rml	2014-01-09 15:19:22 +0000
+++ l10n_ar_wsafip_fe/report/invoice.rml	2014-01-09 17:56:50 +0000
@@ -106,11 +106,11 @@
             <nextFrame name="seller_section"/>
                 <para style="seller"><b>Razón Social: </b>[[ company.name ]].</para>
                 <para style="seller"><b>Domicilio Comercial: </b>
-                [[ company.partner_id.street or '[ERROR!]' ]] 
-                [[ company.partner_id.street2 or '' ]], 
-                [[ ', '.join([ company.partner_id.city or '',
+                <c>[[ company.partner_id.street or removeParentNode('c') ]],</c>
+                <c>[[ company.partner_id.street2 or removeParentNode('c') ]],</c>
+                <c>[[ ', '.join([ company.partner_id.city or '',
                 company.partner_id.state_id and company.partner_id.state_id.name or '',
-                company.partner_id.country_id and company.partner_id.country_id.name or '' ] )]].</para>
+                company.partner_id.country_id and company.partner_id.country_id.name or '' ] )]].</c></para>
                 <para style="seller"><b>Condición frente al IVA: </b>[[ company.partner_id.responsability_id.name ]].</para>
             <nextFrame name="docinfo_section"/>
                 <para style="document_class"><b>[[ o.journal_id.journal_class_id.name.split('[')[0] ]]</b></para>
@@ -141,16 +141,16 @@
                     <tr>
                     <td><para style="seller"><b>Condición frente al IVA: </b>[[ o.partner_id.responsability_id.name ]]</para></td>
                     <td><para style="seller"><b>Domicilio: </b>
-                    [[ o.partner_id and o.partner_id.street or '[ERROR!]' ]] 
-                    [[ o.partner_id and o.partner_id.street2 or '' ]], 
-                    [[ ', '.join([ o.partner_id and o.partner_id.city or '',
+                    <c>[[ o.partner_id and o.partner_id.street or removeParentNode('c') ]],</c>
+                    <c>[[ o.partner_id and o.partner_id.street2  or removeParentNode('c') ]], </c>
+                    <c>[[ ', '.join([ o.partner_id and o.partner_id.city or '' ,
                     o.partner_id and o.partner_id.state_id and o.partner_id.state_id.name or '',
-                    o.partner_id and o.partner_id.country_id and o.partner_id.country_id.name or '' ] )]].</para></td>
+                    o.partner_id and o.partner_id.country_id and o.partner_id.country_id.name or '' ] )]].</c></para></td>
                     <para style="seller"><b>Condición frente al IVA: </b>[[ o.partner_id.responsability_id.name ]].</para>
                     </tr>
                     <tr>
-                    <td><para style="seller"><b>Condición de venta: </b> Efectivo </para></td>
-                    <td><para style="seller"><b>Nro. Remito: </b>[[ o.origin if o.afip_service_start is None else '-' ]]</para></td>
+                    <td><para style="seller"><b>Medio de Pago: </b> Efectivo </para></td>
+                    <td><para style="seller"><b>Nro. Remito: </b>[[ o.origin if o.afip_service_start else '-' ]]</para></td>
                     </tr>
                 </blockTable>
                 <nextFrame name="detail_section"/>

=== modified file 'l10n_ar_wsafip_fe/test/inv_2iva.yml'
--- l10n_ar_wsafip_fe/test/inv_2iva.yml	2014-01-08 19:23:15 +0000
+++ l10n_ar_wsafip_fe/test/inv_2iva.yml	2014-01-09 17:56:50 +0000
@@ -6,10 +6,17 @@
 - !record {model: account.invoice, id: inv_ri2ri_2iva}:
     company_id: com_ivari
     partner_id: par_ivari2
+<<<<<<< TREE
     account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
 
 - !record {model: account.invoice, id: inv_ri2ri_2iva}:
     partner_id: par_ivari2
+=======
+    account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
+ 
+- !record {model: account.invoice, id: inv_ri2ri_2iva}:
+    partner_id: par_ivari2
+>>>>>>> MERGE-SOURCE
     journal_id: !ref {model: account.journal, search: "[('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
     period_id:  !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
     account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}

=== modified file 'l10n_ar_wsafip_fe/test/inv_2prod.yml'
--- l10n_ar_wsafip_fe/test/inv_2prod.yml	2014-01-08 19:23:40 +0000
+++ l10n_ar_wsafip_fe/test/inv_2prod.yml	2014-01-09 17:56:50 +0000
@@ -5,10 +5,17 @@
 - Create a simple invoice type B
 - !record {model: account.invoice, id: inv_ri2rm_2prod}:
     company_id: com_ivari
+<<<<<<< TREE
     account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
     partner_id: par_rm
 
 - !record {model: account.invoice, id: inv_ri2rm_2prod}:
+=======
+    account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
+    partner_id: par_rm
+    
+- !record {model: account.invoice, id: inv_ri2rm_2prod}:
+>>>>>>> MERGE-SOURCE
     partner_id: par_rm
     journal_id: !ref {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
     period_id:  !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
@@ -29,17 +36,31 @@
         uos_id: product.product_uom_unit
         invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
 
-- Check Journal
-- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Check Journal}:
-    - code == 'FVB0001'
-    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
-
-- Check Journal in invoice
-- !assert {model: account.invoice, id: inv_ri2rm_2prod, string: Check Journal}:
-    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
-    - journal_id.code == 'FVB0001'
-    - journal_id.company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
-
+<<<<<<< TREE
+- Check Journal
+- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Check Journal}:
+    - code == 'FVB0001'
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+
+- Check Journal in invoice
+- !assert {model: account.invoice, id: inv_ri2rm_2prod, string: Check Journal}:
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+    - journal_id.code == 'FVB0001'
+    - journal_id.company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+
+=======
+- Check Journal
+- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Check Journal}:
+    - code == 'FVB0001'
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+
+- Check Journal in invoice
+- !assert {model: account.invoice, id: inv_ri2rm_2prod, string: Check Journal}:
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+    - journal_id.code == 'FVB0001'
+    - journal_id.company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+    
+>>>>>>> MERGE-SOURCE
 - Compute amount
 - !python {model: account.invoice}: |
     inv_id = [ref('inv_ri2rm_2prod')]
@@ -54,6 +75,7 @@
     - afip_cae != ''
     - afip_cae_due != ''
 
+<<<<<<< TREE
 - Print invoice
 - !python {model: account.invoice}: |
     import netsvc, tools, os
@@ -61,3 +83,11 @@
     if tools.config['test_report_directory']:
         file(os.path.join(tools.config['test_report_directory'], 'wsafip_fe_b_iva.'+format), 'wb+').write(data)
 
+=======
+- Print invoice
+- !python {model: account.invoice}: |
+    import netsvc, tools, os
+    (data, format) = netsvc.LocalService('report.account.invoice_fe').create(cr, uid, [ref('inv_ri2rm_2prod')], {}, {})
+    if tools.config['test_report_directory']:
+        file(os.path.join(tools.config['test_report_directory'], 'wsafip_fe_b_iva.'+format), 'wb+').write(data)
+>>>>>>> MERGE-SOURCE

=== modified file 'l10n_ar_wsafip_fe/test/invoice.yml'
--- l10n_ar_wsafip_fe/test/invoice.yml	2014-01-08 19:24:05 +0000
+++ l10n_ar_wsafip_fe/test/invoice.yml	2014-01-09 17:56:50 +0000
@@ -21,17 +21,31 @@
         uos_id: product.product_uom_unit
         invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
 
-- Check Journal
-- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Check Journal}:
-    - code == 'FVB0001'
-    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
-
-- Check Journal in invoice
-- !assert {model: account.invoice, id: inv_ri2rm, string: Check Journal}:
-    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
-    - journal_id.code == 'FVB0001'
-    - journal_id.company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
-
+<<<<<<< TREE
+- Check Journal
+- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Check Journal}:
+    - code == 'FVB0001'
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+
+- Check Journal in invoice
+- !assert {model: account.invoice, id: inv_ri2rm, string: Check Journal}:
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+    - journal_id.code == 'FVB0001'
+    - journal_id.company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+
+=======
+- Check Journal
+- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Check Journal}:
+    - code == 'FVB0001'
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+
+- Check Journal in invoice
+- !assert {model: account.invoice, id: inv_ri2rm, string: Check Journal}:
+    - company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+    - journal_id.code == 'FVB0001'
+    - journal_id.company_id.name == 'Coop. Trab. Moldeo Interactive Ltda.'
+    
+>>>>>>> MERGE-SOURCE
 - Compute amount
 - !python {model: account.invoice}: |
     inv_id = [ref('inv_ri2rm')]
@@ -46,11 +60,22 @@
     - afip_cae != ''
     - afip_cae_due != ''
 
-- Print invoice
-- !python {model: account.invoice}: |
-    import netsvc, tools, os
-    (data, format) = netsvc.LocalService('report.account.invoice_fe').create(cr, uid, [ref('inv_ri2rm')], {}, {})
-    if tools.config['test_report_directory']:
-        file(os.path.join(tools.config['test_report_directory'], 'wsafip_fe_b.'+format), 'wb+').write(data)
-
-
+<<<<<<< TREE
+- Print invoice
+- !python {model: account.invoice}: |
+    import netsvc, tools, os
+    (data, format) = netsvc.LocalService('report.account.invoice_fe').create(cr, uid, [ref('inv_ri2rm')], {}, {})
+    if tools.config['test_report_directory']:
+        file(os.path.join(tools.config['test_report_directory'], 'wsafip_fe_b.'+format), 'wb+').write(data)
+
+
+=======
+- Print invoice
+- !python {model: account.invoice}: |
+    import netsvc, tools, os
+    (data, format) = netsvc.LocalService('report.account.invoice_fe').create(cr, uid, [ref('inv_ri2rm')], {}, {})
+    if tools.config['test_report_directory']:
+        file(os.path.join(tools.config['test_report_directory'], 'wsafip_fe_b.'+format), 'wb+').write(data)
+
+ 
+>>>>>>> MERGE-SOURCE

=== modified file 'l10n_ar_wsafip_fe/wsafip_server.py'
--- l10n_ar_wsafip_fe/wsafip_server.py	2013-12-05 21:01:41 +0000
+++ l10n_ar_wsafip_fe/wsafip_server.py	2014-01-09 17:56:50 +0000
@@ -483,6 +483,8 @@
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
                                      _(u'System return error %i: %s') % (e[0], e[1]))
+                                     
+            soapRequest = [{ 'FeCabReq':{ 'CantReg': len(invoice_request), 'PtoVta': invoice_request[first]['PtoVta'], 'CbteTipo': invoice_request[first]['CbteTipo'],}, 'FeDetReq': [{ 'FECAEDetRequest': dict([ (k, v) for k,v in req.iteritems() if k not in ['CantReg', 'PtoVta', 'CbteTipo'] ] ) } for req in invoice_request.itervalues()], }]
 
             for resp in response.FeDetResp.FECAEDetResponse:
                 if resp.Resultado == 'R':
@@ -503,6 +505,8 @@
                         'CbteHasta': resp.CbteHasta,
                         'CAE': resp.CAE,
                         'CAEFchVto': resp.CAEFchVto,
+                        'Request': soapRequest,
+                        'Response': response,
                     }
         return r
 

=== modified file 'l10n_ar_wsafip_fex/AUTHORS'
--- l10n_ar_wsafip_fex/AUTHORS	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/AUTHORS	2014-01-09 17:56:50 +0000
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -29,11 +31,11 @@
 # saber como ha contribuido cada autor en el módulo le recomendamos ver la
 # página de launchpad
 #
-# http://bazaar.launchpad.net/~openerp-l10n-ar-localization/openerp-l10n-ar-localization/6.0/changes
+# http://bazaar.launchpad.net/~openerp-l10n-ar-localization/openerp-l10n-ar-localization/trunk/changes
 #
 ##############################################################################
 
 Cristian S. Rocha <cristian.rocha@xxxxxxxxxxx>
-Darío De Giacomo <dariokdg@xxxxxxxxx>
+Darío Kevin De Giacomo <dariokdg@xxxxxxxxx>
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'l10n_ar_wsafip_fex/__init__.py'
--- l10n_ar_wsafip_fex/__init__.py	2013-11-14 19:03:52 +0000
+++ l10n_ar_wsafip_fex/__init__.py	2014-01-09 17:56:50 +0000
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,6 +25,9 @@
 import wsafip_server
 import invoice
 import journal
+import afip_export_incoterms
+import afip_export_permissions
+import product_uom
 import report
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'l10n_ar_wsafip_fex/__openerp__.py'
--- l10n_ar_wsafip_fex/__openerp__.py	2014-01-09 15:19:22 +0000
+++ l10n_ar_wsafip_fex/__openerp__.py	2014-01-09 17:56:50 +0000
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2013 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,14 +21,21 @@
 #
 ##############################################################################
 {   'active': False,
-    'author': 'OpenERP - Team de Localizaci\xc3\xb3n Argentina',
+    'author': 'Dar\xc3\xado Kevin De Giacomo (Elepe Servicios >> www.elepeservicios.com.ar)',
     'category': 'Localization/Argentina',
     'demo_xml': [],
-    'depends': ['l10n_ar_wsafip_fe'],
+    'depends': ['l10n_ar_wsafip_fe',
+                'l10n_ar_states'
+                ],
     'description': '\n\nAPI e GUI para acceder a las Web Services de Factura Electr\xc3\xb3nica de Exportaci\xc3\xb3n de la AFIP\n\n',
-    'init_xml': [],
+    'init_xml': [
+                      'data/res_country_afip_code.xml',
+                      'data/res_currency_afip_code.xml',
+                      'data/product_uom_afip_code.xml',
+                      ],
     'installable': True,
     'license': 'AGPL-3',
+<<<<<<< TREE
     'name': 'Argentina - Web Services de Factura Electr\xc3\xb3nica del AFIP',
     'test': [   'test/test_key.yml',
                 'test/partners.yml',
@@ -42,5 +51,19 @@
                       'security/wsafip_fex_security.xml',
                       'security/ir.model.access.csv'],
     'version': '2.7.243',
+=======
+    'name': 'Argentina - Web Services de F.E. de Exportaci\xc3\xb3n del AFIP',
+    'update_xml': [  
+                      'data/wsafip_server.xml', 
+                      'data/invoice_view.xml',
+                      'data/invoice_workflow.xml',
+                      'data/journal_view.xml',
+                      'data/reports.xml',
+                      'data/wsafip_fex_config.xml',
+                      'data/res_config_view.xml',
+                      'security/ir.model.access.csv',
+                      ],
+    'version': '2.7.243',
+>>>>>>> MERGE-SOURCE
     'website': 'https://launchpad.net/~openerp-l10n-ar-localization'}
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_ar_wsafip_fex/afip_export_incoterms.py'
--- l10n_ar_wsafip_fex/afip_export_incoterms.py	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/afip_export_incoterms.py	2014-01-09 17:56:50 +0000
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+from openerp.osv import fields, osv
+
+class afip_incoterms(osv.osv):
+    
+    _name = "afip.incoterms"
+    _rec_name = 'afip_export_incoterm_code'
+    _columns = {
+        'afip_export_incoterm_code': fields.char('INCOTERM AFIP Code', size=3, required=True),
+        'afip_export_incoterm_desc': fields.char('INCOTERM Description', size=20, required=True),
+    }
+    
+    #wsfex_update_incoterms <-- se actualiza mediante esa funcion en wsafip_server
+
+afip_incoterms()

=== added file 'l10n_ar_wsafip_fex/afip_export_permissions.py'
--- l10n_ar_wsafip_fex/afip_export_permissions.py	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/afip_export_permissions.py	2014-01-09 17:56:50 +0000
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+from openerp.osv import fields, osv
+
+class afip_export_permissions(osv.osv):
+    _name = "afip.export.permissions"
+    _columns = {
+        'invoice_id': fields.many2one('account.invoice', 'Invoice ID'),
+        'permission_code': fields.char('Codigo Despacho/Permiso de Embarque', size=16),
+        'dst_merc': fields.many2one('res.country', 'Pais destino de la mercaderia', domain="[('afip_code','!=',None)]"),
+        'valid_permission': fields.boolean('Valid Permission')
+    }
+            
+afip_export_permissions()

=== modified file 'l10n_ar_wsafip_fex/config.py'
--- l10n_ar_wsafip_fex/config.py	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/config.py	2014-01-09 17:56:50 +0000
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -70,21 +72,27 @@
             # Tomamos la compania
             company = ws.company_id
             conn_class = 'homologation' if ws.wsfex_for_homologation else 'production'
-
+            conn_ids = []
             # Hay que crear la autorizacion para el servicio si no existe.
-            conn_ids = conn_obj.search(cr, uid, [('partner_id','=',company.partner_id.id)])
-
+            connection = conn_obj.search(cr, uid, [('partner_id','=',company.partner_id.id)])
+            if connection:
+                conn_brw = conn_obj.browse(cr, uid, connection[0])
+                if conn_brw.server_id.code != 'wsfex':
+                    conn_ids = []
+                else:
+                    conn_ids = [1]
+                
             if len(conn_ids) == 0:
                 # Hay que crear la secuencia de proceso en batch si no existe.
                 seq_ids = sequence_obj.search(cr, uid, [('code','=','wsafip_fex_sequence')])
                 if seq_ids:
                     seq_id = seq_ids[0]
                 else:
-                    seq_id = sequence_obj.create(cr, uid, {'name': 'Web Service AFIP Sequence for Invoices', 'code': 'ws_afip_sequence'})
+                    seq_id = sequence_obj.create(cr, uid, {'name': 'Web Service AFIP Sequence for FEX Invoices', 'code': 'ws_afip_sequence'})
 
                 # Crear el conector al AFIP
                 conn_id = conn_obj.create(cr, uid, {
-                    'name': 'AFIP Sequence Authorization Invoice: %s' % company.name,
+                    'name': 'AFIP FEX Sequence Authorization Invoice: %s' % company.name,
                     'partner_id': company.partner_id.id,
                     'logging_id': afipserver_obj.search(cr, uid, [('code','=','wsaa'),('class','=',conn_class)])[0],
                     'server_id': afipserver_obj.search(cr, uid, [('code','=','wsfex'),('class','=',conn_class)])[0],
@@ -96,7 +104,7 @@
 
             # Asigno el conector al AFIP
             jou_ids = journal_obj.search(cr, uid, [('company_id','=',company.id),
-                                                   ('point_of_sale','=',ws.wsfe_point_of_sale),
+                                                   ('point_of_sale','=',ws.wsfex_point_of_sale),
                                                    ('type','=','sale')])
 
             journal_obj.write(cr, uid, jou_ids, { 'afip_connection_id': conn_id })
@@ -111,9 +119,10 @@
                 else:
                     _logger.info("Journal '%s' cant be used." % journal.name)
 
-            # Actualizo el código de impuestos de la AFIP en los impuestos locale.s
+            # Actualizo datos necesarios (idioma comprobante, incoterms, y cotizacion de las monedas) desde AFIP.
             conn = conn_obj.browse(cr, uid, conn_id)
-            conn.server_id.wsfe_update_tax(conn_id)
+            conn.server_id.wsfex_update_incoterms(conn_id) 
+            conn.server_id.wsfex_update_currency_rates(conn_id)
             
         return True
 
@@ -129,6 +138,6 @@
         'company_id': _default_company,
         'wsfex_for_homologation': False,
     }
-l10n_ar_wsafip_fe_config()
+l10n_ar_wsafip_fex_config()
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'l10n_ar_wsafip_fex/data/invoice_view.xml'
--- l10n_ar_wsafip_fex/data/invoice_view.xml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/data/invoice_view.xml	2014-01-09 17:56:50 +0000
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C), 2012, OpenERP - Team de Localización Argentina.
- https://launchpad.net/~openerp-l10n-ar-localization
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
 
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
@@ -23,43 +25,62 @@
             <field name="name">account.invoice.afip.form</field>
             <field name="inherit_id" ref="account.invoice_form" />
             <field name="arch" type="xml">
-                <field name="invoice_line" position="replace">
-                    <field context="{'partner_id': partner_id, 'price_type': context.get('price_type') or False, 'type': type}" name="invoice_line" on_change="onchange_invoice_line(invoice_line)">
-                        <tree string="Invoice lines" editable="bottom">
-                            <field name="product_id"
-                                on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
-                            <field name="name"/>
-                            <field name="company_id" invisible="1"/>
-                            <field name="account_id" groups="account.group_account_user"
-                                domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '=', 'other')]"
-                                on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
-                            <field name="account_analytic_id" groups="analytic.group_analytic_accounting"
-                                domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/>
-                            <field name="quantity"/>
-                            <field name="uos_id" groups="product.group_uom"
-                                on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
-                            <field name="price_unit"/>
-                            <field name="discount" groups="sale.group_discount_per_so_line"/>
-                            <field name="invoice_line_tax_id" widget="many2many_tags" context="{'type':parent.type}"
-                                domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]"/>
-                            <field name="price_subtotal"/>
-                        </tree>
-                    </field>
-                </field>
- 
-                <notebook position="before">
-                    <field name='afip_concept' invisible="1"/>
-                    <group col="4" attrs="{'invisible':[('afip_concept','not in',['2','3'])]}">
-                        <field name='afip_service_start' attrs="{'required':[('afip_concept','in',['2','3'])]}"/>
-                        <field name='afip_service_end' attrs="{'required':[('afip_concept','in',['2','3'])]}"/>
-                    </group>
+                <xpath expr="/form/sheet/group/group/field[@name='date_invoice']" position="after"> 
+                    <field name="afip_export_rspn" invisible="1"/>
+                </xpath>
+                <notebook>
+                    <page string="Export Configuration" attrs="{'invisible': [('afip_export_rspn', '!=', 'EXT')]}" >
+                        <group>
+                            <group>
+                                <field name="afip_export_concept" attrs="{'required': [('afip_export_rspn', '==', 'EXT')], 
+                                                                          'readonly': [('state', '!=', 'draft')]}" 
+                                                                  colspan="2" 
+                                                                  on_change="onchange_concept_export(afip_export_concept)"/>
+                                                                  
+                                <field name="afip_export_lang_invoice" attrs="{'required': [('afip_export_rspn', '==', 'EXT')], 
+                                                                               'readonly': [('state', '!=', 'draft')]}" 
+                                                                       colspan="2"/>
+                                                                       
+                                <field name="afip_export_exist_perm" invisible="1" 
+                                                                     on_change="onchange_permissions(afip_export_exist_perm)"/>
+                                                                     
+                            </group>
+                            
+                            <group>
+                                <field name="afip_export_incoterm" widget="selection" 
+                                                                   colspan="2" 
+                                                                   attrs="{'required':  [('afip_export_rspn', '==', 'EXT'), 
+                                                                                         ('afip_export_concept', '==', '1')], 
+                                                                           'readonly':  [('state', '!=', 'draft')]}"/>
+                                                                           
+                                <field name="afip_export_dst_pais" domain="[('afip_code','!=','False')]" 
+                                                                   colspan="2" 
+                                                                   attrs="{'readonly': [('state', '!=', 'draft')],
+                                                                           'required':  [('afip_export_rspn', '==', 'EXT')]}"/>
+                                                                   
+                            </group>
+                        </group>
+                        <field name="afip_export_permissions" attrs="{'readonly': [('state', '!=', 'draft')], 
+                                                                      'required': ['|', ('afip_export_rspn', '==', 'EXT'), 
+                                                                                        ('afip_export_concept', '==', '1')], 
+                                                                      'invisible': [('afip_export_concept', '!=', '1')] }">
+                                                                      
+                            <tree colors="grey:valid_permission==False; green:valid_permission==True" fonts="bold:valid_permission==True">
+                                <field name="permission_code"/>
+                                <field name="dst_merc"/>
+                                <field name="valid_permission"/>
+                            </tree>
+                            <form>
+                                <field name="permission_code" required="1"/>
+                                <field name="dst_merc" required="1"/>
+                            </form>
+                        </field>
+                        <button class="oe_highlight" string='Validate Permissions' name='button_check_permissions' type='object' attrs="{'invisible': ['|', ('afip_export_concept', '!=', '1'), ('state', '!=', 'draft')]}"/>
+                        <group>
+                            <field name="afip_export_obs_com" class="oe_inline" placeholder="Observations..." attrs="{'readonly': [('state', '!=', 'draft')]}"/>
+                        </group>
+                    </page>
                 </notebook>
-                <field name="move_id" position="after">
-                    <field name='afip_batch_number' invisible="1" readonly="1"/>
-                    <field name='afip_cae' readonly="1"/>
-                    <field name='afip_cae_due' readonly="1"/>
-                    <field name='afip_error_id' readonly="1"/>
-                </field>
             </field>
         </record>
     </data>

=== added file 'l10n_ar_wsafip_fex/data/invoice_workflow.xml'
--- l10n_ar_wsafip_fex/data/invoice_workflow.xml	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/invoice_workflow.xml	2014-01-09 17:56:50 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+    <data>
+        <record id="account.act_open" model="workflow.activity">
+            <field name="wkf_id" ref="account.wkf"/>
+            <field name="name">open</field>
+            <field name="action">afip_validation()
+action_date_assign()
+action_move_create()
+action_number()
+action_retrieve_cae()
+write({'state':'open'})</field>
+            <field name="kind">function</field>
+        </record>
+        <record id="account.t4" model="workflow.transition">
+            <field name="act_from" ref="account.act_draft"/>
+            <field name="act_to" ref="account.act_open"/>
+            <field name="condition">valid_batch()</field>
+        </record>
+    </data>
+</openerp>
+<!-- vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4
+     -->

=== modified file 'l10n_ar_wsafip_fex/data/journal_view.xml'
--- l10n_ar_wsafip_fex/data/journal_view.xml	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/data/journal_view.xml	2014-01-09 17:56:50 +0000
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C), 2012, OpenERP - Team de Localización Argentina.
- https://launchpad.net/~openerp-l10n-ar-localization
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
 
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
@@ -18,22 +20,20 @@
 -->
 <openerp>
     <data> 
-        <record id="view_account_journal_afip_form" model="ir.ui.view">
+        <record id="view_account_journal_fex_form" model="ir.ui.view">
             <field name="model">account.journal</field>
-            <field name="name">account.journal.afip.form</field>
-            <field name="inherit_id" ref="l10n_ar_invoice.view_account_journal_ar_form" />
+            <field name="name">account.journal.fex.form</field>
+            <field name="inherit_id" ref="l10n_ar_wsafip_fe.view_account_journal_afip_form" />
             <field name="arch" type="xml">
-                <page string="AFIP" position="inside">
-                    <group colspan="2" col="2">
-                        <separator string="Web Services" colspan="4"/>
-                        <field name='afip_connection_id'/>
-                        <field name='afip_state'/>
-                        <field name='afip_items_generated'/>
-                    </group>
-                </page>
+                <xpath expr="/form/notebook/page/group/field[@name='afip_items_generated']" position="replace">
+                    <field name='afip_items_generated'/>
+                </xpath>
+                <xpath expr="/form/notebook/page/group/field[@name='afip_state']" position="replace">
+                    <field name='afip_state'/>
+                </xpath>
             </field>
         </record>
-  </data>
+    </data>
 </openerp>
 <!-- vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4
      -->

=== added file 'l10n_ar_wsafip_fex/data/product_uom_afip_code.xml'
--- l10n_ar_wsafip_fex/data/product_uom_afip_code.xml	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/product_uom_afip_code.xml	2014-01-09 17:56:50 +0000
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+    <data>
+
+<!-- ACTUALIZADO SEGUN LOS DATOS DE LA FECHA: 26/01/2011 -->
+
+<!-- CATEGORIAS -->
+
+        <record id="product_uom_categ_vol_cub" model="product.uom.categ">
+            <field name="name">Volumen Cubico</field>
+        </record>
+        <record id="product_uom_categ_rad" model="product.uom.categ">
+            <field name="name">Unidad de Radiactividad</field>
+        </record>
+        <record id="product_uom_categ_other" model="product.uom.categ">
+            <field name="name">Otros (sin clasificacion)</field>
+        </record>
+
+
+
+
+      
+    
+<!-- UNIDAD -->
+        <record id="product.product_uom_unit" model="product.uom"> 
+                <field name="afip_code">7</field>
+        </record> 
+        <record id="product_uom_par" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_unit"/>
+            <field name="name">Par(es)</field>
+            <field name="factor_inv" eval="12"/>
+            <field name="uom_type">bigger</field>
+            <field name="afip_code">8</field>
+        </record>
+        <record id="product.product_uom_dozen" model="product.uom">
+                <field name="afip_code">9</field>
+        </record> 
+        
+        
+<!-- DISTANCIA -->
+        
+        <record id="product_uom_mm" model="product.uom">
+            <field name="category_id" ref="product.uom_categ_length"/>
+            <field name="name">Milimetros</field>
+            <field name="factor_inv" eval="0.001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">15</field>
+        </record>
+        <record id="product.product_uom_cm" model="product.uom">
+                <field name="afip_code">20</field>
+        </record> 
+        <record id="product.product_uom_meter" model="product.uom">
+                <field name="afip_code">2</field>
+        </record> 
+        <record id="product.product_uom_km" model="product.uom">
+                <field name="afip_code">17</field>
+        </record>
+        
+        
+<!-- PESO -->
+
+<!--
+        NO SE PUEDEN INCLUIR PICOGRAMOS POR LA CANTIDAD DE DECIMALES ACEPTADOS.
+        REVISAR EN CASO DE SER NECESARIO.
+        <record id="product_uom_picog" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_kgm"/>
+            <field name="name">Picogramos</field>
+            <field name="factor_inv" eval="12"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">15</field>
+        </record>
+-->
+        <record id="product_uom_nanog" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_kgm"/>
+            <field name="name">Nanogramo(s)</field>
+            <field name="factor_inv" eval="0.000000000001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">34</field>
+        </record>
+        <record id="product_uom_microg" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_kgm"/>
+            <field name="name">Microgramo(s)</field>
+            <field name="factor_inv" eval="0.000000001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">33</field>
+        </record>
+        <record id="product_uom_milig" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_kgm"/>
+            <field name="name">Miligramo(s)</field>
+            <field name="factor_inv" eval="0.000001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">41</field>
+        </record>
+        <record id="product.product_uom_gram" model="product.uom">
+                <field name="afip_code">14</field>
+        </record> 
+        <record id="product.product_uom_kgm" model="product.uom">
+                <field name="afip_code">1</field>
+        </record> 
+        <record id="product.product_uom_ton" model="product.uom">
+                <field name="afip_code">29</field>
+        </record>
+
+
+
+<!-- VOLUMEN (litros) -->
+
+        <record id="product_uom_milil" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_vol"/>
+            <field name="name">Mililitro(s)</field>
+            <field name="factor_inv" eval="0.001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">47</field>
+        </record>
+        <record id="product.product_uom_litre" model="product.uom">
+                <field name="afip_code">5</field>
+        </record> 
+        <record id="product_uom_hectol" model="product.uom">
+            <field name="category_id" ref="product.product_uom_categ_vol"/>
+            <field name="name">Hectolitro(s)</field>
+            <field name="factor_inv" eval="100"/>
+            <field name="uom_type">bigger</field>
+            <field name="afip_code">18</field>
+        </record>
+
+
+
+<!-- VOLUMEN (cubico) -->
+
+        <record id="product_uom_mmcub" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_vol_cub"/>
+            <field name="name">Mm Cubico(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="0.001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">16</field>
+        </record>
+        <record id="product_uom_cmcub" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_vol_cub"/>
+            <field name="name">Cm Cubico(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="0.01"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">27</field>
+        </record>
+        <record id="product_uom_metrocub" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_vol_cub"/>
+            <field name="name">Metro(s) Cubico(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">reference</field>
+            <field name="afip_code">4</field>
+        </record>
+        <record id="product_uom_damcub" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_vol_cub"/>
+            <field name="name">Dam Cubico(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="10"/>
+            <field name="uom_type">bigger</field>
+            <field name="afip_code">30</field>
+        </record>
+        <record id="product_uom_hmcub" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_vol_cub"/>
+            <field name="name">Hm Cubico(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="100"/>
+            <field name="uom_type">bigger</field>
+            <field name="afip_code">31</field>
+        </record>
+        <record id="product_uom_kmcub" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_vol_cub"/>
+            <field name="name">Km Cubico(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1000"/>
+            <field name="uom_type">bigger</field>
+            <field name="afip_code">32</field>
+        </record>
+
+
+
+<!-- RADIACTIVIDAD -->
+
+        <record id="product_uom_microcurie" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_rad"/>
+            <field name="name">Microcurie</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="0.000001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">50</field>
+        </record>
+        <record id="product_uom_milicurie" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_rad"/>
+            <field name="name">Milicurie</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="0.001"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">49</field>
+        </record>
+        <record id="product_uom_curie" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_rad"/>
+            <field name="name">Curie</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">reference</field>
+            <field name="afip_code">48</field>
+        </record>
+
+
+
+<!-- OTROS (sin clasificacion) -->
+
+        <record id="product_uom_quilates" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Quilates</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">reference</field>
+            <field name="afip_code">10</field>
+        </record>
+        <record id="product_uom_packs" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Packs</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">62</field>
+        </record>
+        <record id="product_uom_hormas" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Hormas</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">63</field>
+        </record>
+        <record id="product_uom_m2" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Metro(s) Cuadrado(s)</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">3</field>
+        </record>
+        <record id="product_uom_kWh" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">1000 kWh</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">6</field>
+        </record>
+        <record id="product_uom_bonif" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Bonificacion</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">99</field>
+        </record>
+        <record id="product_uom_ot_un" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Otras Unidades</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">98</field>
+        </record>
+        <record id="product_uom_naipes" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Paq. Mazo Naipes</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">25</field>
+        </record>
+        <record id="product_uom_millares" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Millaes</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">11</field>
+        </record>
+        <record id="product_uom_uiacthor" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Unidad Internacional Act. Hormonal</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">24</field>
+        </record>
+        <record id="product_uom_muiacthor" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">M. Unidad Internacional Act. Hormonal</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">26</field>
+        </record>
+        <record id="product_uom_kgbase" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">KG Base</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">53</field>
+        </record>
+        <record id="product_uom_gruesa" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Gruesa</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">54</field>
+        </record>
+        <record id="product_uom_kgbruto" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">KG Bruto</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">61</field>
+        </record>
+        <record id="product_uom_uiactant" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Unidad Internacional Act. Antibiotica</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">28</field>
+        </record>
+        <record id="product_uom_muiactant" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">M. Unidad Internacional Act. Antibiotica</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">36</field>
+        </record>
+        <record id="product_uom_uiactig" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Unidad Internacional Act. Inmunologica</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">37</field>
+        </record>
+        <record id="product_uom_muiactig" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">M. Unidad Internacional Act. Inmunologica</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">55</field>
+        </record>
+        <record id="product_uom_kgactivo" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">KG Activo</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">21</field>
+        </record>
+        <record id="product_uom_gactivo" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Gramo Activo</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">22</field>
+        </record>
+        <record id="product_uom_gbase" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Gramo Base</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">23</field>
+        </record>
+        <record id="product_uom_vacio" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">No especificado</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">0</field>
+        </record>
+        <record id="product_uom_mega_actantib" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Mega U. Inter Act. Antib</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">12</field>
+        </record>
+        <record id="product_uom_un_act_inmung" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Unidad Int. Act. Inmung</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">13</field>
+        </record>
+        <record id="product_uom_mega_act_inmung" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Mega Unidad Int. Act. Inmung</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">19</field>
+        </record>
+        <record id="product_uom_unidad_act_horm" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Unidad Inter. Act. Hormonal</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">51</field>
+        </record>
+        <record id="product_uom_mega_u_act_horm" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Mega Unidad Inter. Act. Hormonal</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">52</field>
+        </record>
+        <record id="product_uom_anticipos" model="product.uom">
+            <field name="category_id" ref="product_uom_categ_other"/>
+            <field name="name">Señas/Anticipos</field>
+            <field name="factor" eval="1"/>
+            <field name="factor_inv" eval="1"/>
+            <field name="uom_type">smaller</field>
+            <field name="afip_code">97</field>
+        </record>
+    </data>
+</openerp>

=== modified file 'l10n_ar_wsafip_fex/data/reports.xml'
--- l10n_ar_wsafip_fex/data/reports.xml	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/data/reports.xml	2014-01-09 17:56:50 +0000
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- Copyright (C), 2012, OpenERP - Team de Localización Argentina.
- https://launchpad.net/~openerp-l10n-ar-localization
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
 
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
@@ -27,7 +29,7 @@
 			string="Export Electronic Invoices"
                         header="False"
 			attachment="(object.state in ('open','paid')) and ('DOC'+(object.number or '').replace('/',''))"
-			attachment_use="1"/>
+			attachment_use="0"/>
 	</data>
 </openerp>
 

=== modified file 'l10n_ar_wsafip_fex/data/res_config_view.xml'
--- l10n_ar_wsafip_fex/data/res_config_view.xml	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/data/res_config_view.xml	2014-01-09 17:56:50 +0000
@@ -2,8 +2,10 @@
 <!--
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2013 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by

=== added file 'l10n_ar_wsafip_fex/data/res_country_afip_code.xml'
--- l10n_ar_wsafip_fex/data/res_country_afip_code.xml	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/res_country_afip_code.xml	2014-01-09 17:56:50 +0000
@@ -0,0 +1,690 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+    <data>
+        <record id="base.zz" model="res.country">
+            <field name="name">Tierra del Fuego (Argentina)</field>
+            <field name="code">ZZ</field>
+            <field name="currency_id" ref="base.ARS"/>
+            <field name='afip_code'>250</field>
+        </record>
+        <record model='res.country' id='base.ad'>
+                <field name='afip_code'>404</field>
+        </record> 
+        <record model='res.country' id='base.ae'>
+                <field name='afip_code'>331</field>
+        </record> 
+        <record model='res.country' id='base.af'>
+                <field name='afip_code'>301</field>
+        </record> 
+        <record model='res.country' id='base.ag'>
+                <field name='afip_code'>508</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.ai'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.al'>
+                <field name='afip_code'>401</field>
+        </record> 
+        <record model='res.country' id='base.am'>
+                <field name='afip_code'>349</field>
+        </record> 
+        <record model='res.country' id='base.ao'>
+                <field name='afip_code'>149</field>
+        </record> 
+        <record model='res.country' id='base.as'>
+                <field name='afip_code'>506</field>
+        </record> 
+        <record model='res.country' id='base.at'>
+                <field name='afip_code'>405</field>
+        </record> 
+        <record model='res.country' id='base.au'>
+                <field name='afip_code'>501</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.aw'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.az'>
+                <field name='afip_code'>350</field>
+        </record> 
+        <record model='res.country' id='base.ba'>
+                <field name='afip_code'>446</field>
+        </record> 
+        <record model='res.country' id='base.bb'>
+                <field name='afip_code'>201</field>
+        </record> 
+        <record model='res.country' id='base.bd'>
+                <field name='afip_code'>345</field>
+        </record> 
+        <record model='res.country' id='base.be'>
+                <field name='afip_code'>406</field>
+        </record> 
+        <record model='res.country' id='base.bf'>
+                <field name='afip_code'>101</field>
+        </record> 
+        <record model='res.country' id='base.bg'>
+                <field name='afip_code'>407</field>
+        </record> 
+        <record model='res.country' id='base.bh'>
+                <field name='afip_code'>303</field>
+        </record> 
+        <record model='res.country' id='base.bi'>
+                <field name='afip_code'>104</field>
+        </record> 
+        <record model='res.country' id='base.bj'>
+                <field name='afip_code'>112</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.bm'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.bn'>
+                <field name='afip_code'>346</field>
+        </record> 
+        <record model='res.country' id='base.bo'>
+                <field name='afip_code'>202</field>
+        </record> 
+        <record model='res.country' id='base.br'>
+                <field name='afip_code'>203</field>
+        </record> 
+        <record model='res.country' id='base.bs'>
+                <field name='afip_code'>239</field>
+        </record> 
+        <record model='res.country' id='base.bt'>
+                <field name='afip_code'>305</field>
+        </record> 
+        <record model='res.country' id='base.bw'>
+                <field name='afip_code'>103</field>
+        </record> 
+        <record model='res.country' id='base.by'>
+                <field name='afip_code'>439</field>
+        </record> 
+        <record model='res.country' id='base.bz'>
+                <field name='afip_code'>236</field>
+        </record> 
+        <record model='res.country' id='base.ca'>
+                <field name='afip_code'>204</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.cc'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.cf'>
+                <field name='afip_code'>107</field>
+        </record> 
+        <record model='res.country' id='base.cg'>
+                <field name='afip_code'>108</field>
+        </record> 
+        <record model='res.country' id='base.ch'>
+                <field name='afip_code'>430</field>
+        </record> 
+        <record model='res.country' id='base.ci'>
+                <field name='afip_code'>110</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.ck'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.cl'>
+                <field name='afip_code'>208</field>
+        </record> 
+        <record model='res.country' id='base.cm'>
+                <field name='afip_code'>105</field>
+        </record> 
+        <record model='res.country' id='base.cn'>
+                <field name='afip_code'>310</field>
+        </record> 
+        <record model='res.country' id='base.co'>
+                <field name='afip_code'>205</field>
+        </record> 
+        <record model='res.country' id='base.cr'>
+                <field name='afip_code'>206</field>
+        </record> 
+        <record model='res.country' id='base.cu'>
+                <field name='afip_code'>207</field>
+        </record> 
+        <record model='res.country' id='base.cv'>
+                <field name='afip_code'>150</field>
+        </record> 
+        <record model='res.country' id='base.cx'>
+                <field name='afip_code'>507</field>
+        </record> 
+        <record model='res.country' id='base.cy'>
+                <field name='afip_code'>435</field>
+        </record> 
+        <record model='res.country' id='base.cz'>
+                <field name='afip_code'>451</field>
+        </record> 
+        <record model='res.country' id='base.de'>
+                <field name='afip_code'>438</field>
+        </record> 
+        <record model='res.country' id='base.dj'>
+                <field name='afip_code'>153</field>
+        </record> 
+        <record model='res.country' id='base.dk'>
+                <field name='afip_code'>409</field>
+        </record> 
+        <record model='res.country' id='base.dm'>
+                <field name='afip_code'>233</field>
+        </record> 
+        <record model='res.country' id='base.do'>
+                <field name='afip_code'>209</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.dz'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.ec'>
+                <field name='afip_code'>210</field>
+        </record> 
+        <record model='res.country' id='base.ee'>
+                <field name='afip_code'>440</field>
+        </record> 
+        <record model='res.country' id='base.eg'>
+                <field name='afip_code'>113</field>
+        </record> 
+        <record model='res.country' id='base.er'>
+                <field name='afip_code'>160</field>
+        </record> 
+        <record model='res.country' id='base.es'>
+                <field name='afip_code'>410</field>
+        </record> 
+        <record model='res.country' id='base.et'>
+                <field name='afip_code'>161</field>
+        </record> 
+        <record model='res.country' id='base.fi'>
+                <field name='afip_code'>411</field>
+        </record> 
+        <record model='res.country' id='base.fj'>
+                <field name='afip_code'>512</field>
+        </record> 
+        <record model='res.country' id='base.fm'>
+                <field name='afip_code'>515</field>
+        </record> 
+        <record model='res.country' id='base.fo'>
+                <field name='afip_code'>228</field>
+        </record> 
+        <record model='res.country' id='base.fr'>
+                <field name='afip_code'>412</field>
+        </record> 
+        <record model='res.country' id='base.ga'>
+                <field name='afip_code'>115</field>
+        </record>
+    <record model='res.country' id='base.uk'><!-- gb -->
+                <field name='afip_code'>426</field>
+        </record> 
+        <record model='res.country' id='base.gd'>
+                <field name='afip_code'>240</field>
+        </record> 
+        <record model='res.country' id='base.ge'>
+                <field name='afip_code'>351</field>
+        </record> 
+        <record model='res.country' id='base.gh'>
+                <field name='afip_code'>117</field>
+        </record> 
+        <record model='res.country' id='base.gi'>
+                <field name='afip_code'>508</field>
+        </record> 
+        <record model='res.country' id='base.gl'>
+                <field name='afip_code'>228</field>
+        </record> 
+        <record model='res.country' id='base.gm'>
+                <field name='afip_code'>116</field>
+        </record> 
+        <record model='res.country' id='base.gn'>
+                <field name='afip_code'>118</field>
+        </record> 
+        <record model='res.country' id='base.gq'>
+                <field name='afip_code'>119</field>
+        </record> 
+        <record model='res.country' id='base.gr'>
+                <field name='afip_code'>413</field>
+        </record> 
+        <record model='res.country' id='base.gt'>
+                <field name='afip_code'>213</field>
+        </record> 
+        <record model='res.country' id='base.gu'>
+                <field name='afip_code'>511</field>
+        </record> 
+        <record model='res.country' id='base.gw'>
+                <field name='afip_code'>156</field>
+        </record> 
+        <record model='res.country' id='base.gy'>
+                <field name='afip_code'>214</field>
+        </record> 
+        <record model='res.country' id='base.hk'>
+                <field name='afip_code'>341</field>
+        </record> 
+        <record model='res.country' id='base.hn'>
+                <field name='afip_code'>216</field>
+        </record> 
+        <record model='res.country' id='base.hr'>
+                <field name='afip_code'>447</field>
+        </record> 
+        <record model='res.country' id='base.ht'>
+                <field name='afip_code'>215</field>
+        </record> 
+        <record model='res.country' id='base.hu'>
+                <field name='afip_code'>414</field>
+        </record> 
+        <record model='res.country' id='base.id'>
+                <field name='afip_code'>316</field>
+        </record> 
+        <record model='res.country' id='base.ie'>
+                <field name='afip_code'>415</field>
+        </record> 
+        <record model='res.country' id='base.il'>
+                <field name='afip_code'>319</field>
+        </record> 
+        <!--record model='res.country' id='base.im'>
+                <field name='afip_code'></field>
+        </record--> 
+        <record model='res.country' id='base.in'>
+                <field name='afip_code'>315</field>
+        </record> 
+        <record model='res.country' id='base.ir'>
+                <field name='afip_code'>318</field>
+        </record> 
+        <record model='res.country' id='base.is'>
+                <field name='afip_code'>416</field>
+        </record> 
+        <record model='res.country' id='base.it'>
+                <field name='afip_code'>417</field>
+        </record> 
+        <record model='res.country' id='base.jm'>
+                <field name='afip_code'>217</field>
+        </record> 
+        <record model='res.country' id='base.jo'>
+                <field name='afip_code'>321</field>
+        </record> 
+        <record model='res.country' id='base.jp'>
+                <field name='afip_code'>320</field>
+        </record> 
+        <record model='res.country' id='base.ke'>
+                <field name='afip_code'>120</field>
+        </record> 
+        <record model='res.country' id='base.kg'>
+                <field name='afip_code'>353</field>
+        </record> 
+        <record model='res.country' id='base.kh'>
+                <field name='afip_code'>306</field>
+        </record> 
+        <record model='res.country' id='base.ki'>
+                <field name='afip_code'>514</field>
+        </record> 
+        <record model='res.country' id='base.km'>
+                <field name='afip_code'>155</field>
+        </record> 
+        <record model='res.country' id='base.kn'>
+                <field name='afip_code'>238</field>
+        </record> 
+        <record model='res.country' id='base.kp'>
+                <field name='afip_code'>308</field>
+        </record> 
+        <record model='res.country' id='base.kr'>
+                <field name='afip_code'>309</field>
+        </record> 
+        <record model='res.country' id='base.kw'>
+                <field name='afip_code'>323</field>
+        </record>
+        <record model='res.country' id='base.ky'>
+                <field name='afip_code'>508</field>
+        </record> 
+        <record model='res.country' id='base.kz'>
+                <field name='afip_code'>352</field>
+        </record> 
+        <record model='res.country' id='base.la'>
+                <field name='afip_code'>324</field>
+        </record> 
+        <record model='res.country' id='base.lb'>
+                <field name='afip_code'>325</field>
+        </record> 
+        <record model='res.country' id='base.lc'>
+                <field name='afip_code'>234</field>
+        </record> 
+        <record model='res.country' id='base.li'>
+                <field name='afip_code'>418</field>
+        </record> 
+        <record model='res.country' id='base.lk'>
+                <field name='afip_code'>307</field>
+        </record> 
+        <record model='res.country' id='base.lr'>
+                <field name='afip_code'>122</field>
+        </record> 
+        <record model='res.country' id='base.ls'>
+                <field name='afip_code'>121</field>
+        </record> 
+        <record model='res.country' id='base.lt'>
+                <field name='afip_code'>442</field>
+        </record> 
+        <record model='res.country' id='base.lu'>
+                <field name='afip_code'>419</field>
+        </record> 
+        <record model='res.country' id='base.lv'>
+                <field name='afip_code'>441</field>
+        </record> 
+        <record model='res.country' id='base.ly'>
+                <field name='afip_code'>123</field>
+        </record> 
+        <record model='res.country' id='base.ma'>
+                <field name='afip_code'>127</field>
+        </record> 
+        <record model='res.country' id='base.mc'>
+                <field name='afip_code'>421</field>
+        </record> 
+        <record model='res.country' id='base.md'>
+                <field name='afip_code'>443</field>
+        </record> 
+        <record model='res.country' id='base.mg'>
+                <field name='afip_code'>124</field>
+        </record> 
+        <record model='res.country' id='base.mh'>
+                <field name='afip_code'>520</field>
+        </record> 
+        <record model='res.country' id='base.mk'>
+                <field name='afip_code'>450</field>
+        </record> 
+        <record model='res.country' id='base.ml'>
+                <field name='afip_code'>126</field>
+        </record> 
+        <record model='res.country' id='base.mm'>
+                <field name='afip_code'>304</field>
+        </record> 
+        <record model='res.country' id='base.mn'>
+                <field name='afip_code'>329</field>
+        </record> 
+        <record model='res.country' id='base.mo'>
+                <field name='afip_code'>344</field>
+        </record> 
+        <record model='res.country' id='base.mp'>
+                <field name='afip_code'>521</field>
+        </record> 
+        <record model='res.country' id='base.mr'>
+                <field name='afip_code'>129</field>
+        </record> 
+        <record model='res.country' id='base.ms'>
+                <field name='afip_code'>508</field>
+        </record> 
+        <record model='res.country' id='base.mt'>
+                <field name='afip_code'>420</field>
+        </record> 
+        <record model='res.country' id='base.mu'>
+                <field name='afip_code'>128</field>
+        </record>
+        <record model='res.country' id='base.mv'>
+                <field name='afip_code'>327</field>
+        </record> 
+        <record model='res.country' id='base.mw'>
+                <field name='afip_code'>125</field>
+        </record> 
+        <record model='res.country' id='base.mx'>
+                <field name='afip_code'>218</field>
+        </record> 
+        <record model='res.country' id='base.my'>
+                <field name='afip_code'>326</field>
+        </record> 
+        <record model='res.country' id='base.mz'>
+                <field name='afip_code'>151</field>
+        </record> 
+        <record model='res.country' id='base.na'>
+                <field name='afip_code'>158</field>
+        </record> 
+        <record model='res.country' id='base.ne'>
+                <field name='afip_code'>130</field>
+        </record> 
+        <record model='res.country' id='base.ng'>
+                <field name='afip_code'>131</field>
+        </record> 
+        <record model='res.country' id='base.ni'>
+                <field name='afip_code'>219</field>
+        </record> 
+        <!--record model='res.country' id='base.nk'>
+                <field name='afip_code'></field>
+        </record--> 
+        <record model='res.country' id='base.nl'>
+                <field name='afip_code'>423</field>
+        </record> 
+        <record model='res.country' id='base.no'>
+                <field name='afip_code'>422</field>
+        </record> 
+        <record model='res.country' id='base.np'>
+                <field name='afip_code'>330</field>
+        </record> 
+        <record model='res.country' id='base.nr'>
+                <field name='afip_code'>503</field>
+        </record> 
+<!--
+        <record model='res.country' id='base.nu'>
+                <field name='afip_code'></field>
+        </record> 
+-->
+        <record model='res.country' id='base.nz'>
+                <field name='afip_code'>504</field>
+        </record> 
+        <record model='res.country' id='base.om'>
+                <field name='afip_code'>328</field>
+        </record> 
+        <record model='res.country' id='base.pa'>
+                <field name='afip_code'>220</field>
+        </record> 
+        <record model='res.country' id='base.pe'>
+                <field name='afip_code'>222</field>
+        </record> 
+        <record model='res.country' id='base.pf'>
+                <field name='afip_code'>509</field>
+        </record> ACAS
+        <record model='res.country' id='base.pg'>
+                <field name='afip_code'>513</field>
+        </record> 
+        <record model='res.country' id='base.ph'>
+                <field name='afip_code'>312</field>
+        </record> 
+        <record model='res.country' id='base.pk'>
+                <field name='afip_code'>332</field>
+        </record> 
+        <record model='res.country' id='base.pl'>
+                <field name='afip_code'>424</field>
+        </record> 
+        <record model='res.country' id='base.pn'>
+                <field name='afip_code'>227</field>
+        </record> 
+        <record model='res.country' id='base.pr'>
+                <field name='afip_code'>223</field>
+        </record> 
+        <!--record model='res.country' id='base.ps'>
+                <field name='afip_code'></field>
+        </record--> 
+        <!--record model='res.country' id='base.ps'>
+                <field name='afip_code'></field>
+        </record--> 
+        <record model='res.country' id='base.pt'>
+                <field name='afip_code'>325</field>
+        </record> 
+        <record model='res.country' id='base.pw'>
+                <field name='afip_code'>516</field>
+        </record> 
+        <record model='res.country' id='base.py'>
+                <field name='afip_code'>221</field>
+        </record> 
+        <record model='res.country' id='base.qa'>
+                <field name='afip_code'>322</field>
+        </record> 
+        <record model='res.country' id='base.ro'>
+                <field name='afip_code'>427</field>
+        </record> 
+        <record model='res.country' id='base.ru'>
+                <field name='afip_code'>444</field>
+        </record> 
+        <record model='res.country' id='base.rw'>
+                <field name='afip_code'>133</field>
+        </record> 
+        <record model='res.country' id='base.sa'>
+                <field name='afip_code'>302</field>
+        </record> 
+        <record model='res.country' id='base.sb'>
+                <field name='afip_code'>518</field>
+        </record> 
+        <record model='res.country' id='base.sc'>
+                <field name='afip_code'>152</field>
+        </record> 
+        <record model='res.country' id='base.sd'>
+                <field name='afip_code'>138</field>
+        </record> 
+        <record model='res.country' id='base.se'>
+                <field name='afip_code'>429</field>
+        </record> 
+        <record model='res.country' id='base.sg'>
+                <field name='afip_code'>333</field>
+        </record> 
+        <record model='res.country' id='base.sh'>
+                <field name='afip_code'>227</field>
+        </record> 
+        <record model='res.country' id='base.si'>
+                <field name='afip_code'>449</field>
+        </record> 
+        <record model='res.country' id='base.sl'>
+                <field name='afip_code'>135</field>
+        </record> 
+        <record model='res.country' id='base.sm'>
+                <field name='afip_code'>428</field>
+        </record> 
+        <record model='res.country' id='base.sn'>
+                <field name='afip_code'>134</field>
+        </record> 
+        <record model='res.country' id='base.so'>
+                <field name='afip_code'>136</field>
+        </record> 
+        <record model='res.country' id='base.sr'>
+                <field name='afip_code'>232</field>
+        </record> 
+        <record model='res.country' id='base.st'>
+                <field name='afip_code'>157</field>
+        </record> 
+        <record model='res.country' id='base.sv'>
+                <field name='afip_code'>211</field>
+        </record> 
+        <record model='res.country' id='base.sy'>
+                <field name='afip_code'>334</field>
+        </record> 
+        <record model='res.country' id='base.sz'>
+                <field name='afip_code'>137</field>
+        </record> 
+        <record model='res.country' id='base.tc'>
+                <field name='afip_code'>508</field>
+        </record> 
+        <record model='res.country' id='base.td'>
+                <field name='afip_code'>111</field>
+        </record> 
+        <record model='res.country' id='base.tg'>
+                <field name='afip_code'>140</field>
+        </record> 
+        <record model='res.country' id='base.th'>
+                <field name='afip_code'>335</field>
+        </record> 
+        <record model='res.country' id='base.tj'>
+                <field name='afip_code'>354</field>
+        </record> 
+        <record model='res.country' id='base.tk'>
+                <field name='afip_code'>510</field>
+        </record> 
+        <record model='res.country' id='base.tm'>
+                <field name='afip_code'>355</field>
+        </record> 
+        <record model='res.country' id='base.tn'>
+                <field name='afip_code'>141</field>
+        </record> 
+        <record model='res.country' id='base.to'>
+                <field name='afip_code'>519</field>
+        </record> 
+        <record model='res.country' id='base.tr'>
+                <field name='afip_code'>436</field>
+        </record> 
+        <record model='res.country' id='base.tt'>
+                <field name='afip_code'>224</field>
+        </record> 
+        <record model='res.country' id='base.tv'>
+                <field name='afip_code'>517</field>
+        </record> 
+        <record model='res.country' id='base.tw'>
+                <field name='afip_code'>313</field>
+        </record> 
+        <record model='res.country' id='base.tz'>
+                <field name='afip_code'>139</field>
+        </record> 
+        <record model='res.country' id='base.ua'>
+                <field name='afip_code'>445</field>
+        </record> 
+        <record model='res.country' id='base.ug'>
+                <field name='afip_code'>142</field>
+        </record> 
+        <record model='res.country' id='base.us'>
+                <field name='afip_code'>212</field>
+        </record> 
+        <record model='res.country' id='base.uy'>
+                <field name='afip_code'>225</field>
+        </record> 
+        <record model='res.country' id='base.uz'>
+                <field name='afip_code'>356</field>
+        </record> 
+        <record model='res.country' id='base.va'>
+                <field name='afip_code'>431</field>
+        </record> 
+        <record model='res.country' id='base.vc'>
+                <field name='afip_code'>235</field>
+        </record> 
+        <record model='res.country' id='base.ve'>
+                <field name='afip_code'>226</field>
+        </record> 
+        <record model='res.country' id='base.vg'>
+                <field name='afip_code'>508</field>
+        </record> 
+        <record model='res.country' id='base.vn'>
+                <field name='afip_code'>337</field>
+        </record> 
+        <record model='res.country' id='base.vu'>
+                <field name='afip_code'>505</field>
+        </record> 
+        <record model='res.country' id='base.ws'>
+                <field name='afip_code'>506</field>
+        </record> 
+        <record model='res.country' id='base.ye'>
+                <field name='afip_code'>348</field>
+        </record> 
+        <record model='res.country' id='base.za'>
+                <field name='afip_code'>159</field>
+        </record> 
+        <record model='res.country' id='base.zm'>
+                <field name='afip_code'>144</field>
+        </record> 
+        <record model='res.country' id='base.zw'>
+                <field name='afip_code'>132</field>
+        </record> 
+    </data>
+</openerp>
+        

=== added file 'l10n_ar_wsafip_fex/data/res_currency_afip_code.xml'
--- l10n_ar_wsafip_fex/data/res_currency_afip_code.xml	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/res_currency_afip_code.xml	2014-01-09 17:56:50 +0000
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+    <data>
+    
+    
+<!-- UNIDADES DE MAYOR NECESIDAD -->
+
+        <!-- ARGENTINA -->
+        <record id="base.ARS" model="res.currency"> 
+                <field name="afip_code">PES</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- EE.UU. -->
+        <record id="base.USD" model="res.currency"> 
+                <field name="afip_code">DOL</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- MEXICO -->
+        <record id="base.MXN" model="res.currency"> 
+                <field name="afip_code">010</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- URUGUAY -->
+        <record id="base.UYU" model="res.currency"> 
+                <field name="afip_code">011</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- PARAGUAY -->
+        <record id="base.PYG" model="res.currency"> 
+                <field name="afip_code">029</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- CANADA -->
+        <record id="base.CAD" model="res.currency"> 
+                <field name="afip_code">018</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- JAPON -->
+        <record id="base.JPY" model="res.currency"> 
+                <field name="afip_code">019</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- VENEZUELA -->
+        <record id="base.VEF" model="res.currency"> 
+                <field name="afip_code">021</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- REINO UNIDO -->
+        <record id="base.GBP" model="res.currency"> 
+                <field name="afip_code">023</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- AUSTRALIA -->
+        <record id="base.AUD" model="res.currency"> 
+                <field name="afip_code">026</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- BOLIVIA -->
+        <record id="base.BOB" model="res.currency"> 
+                <field name="afip_code">031</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- COLOMBIA -->
+        <record id="base.COP" model="res.currency"> 
+                <field name="afip_code">032</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- CHILE -->
+        <record id="base.CLP" model="res.currency"> 
+                <field name="afip_code">033</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- ECUADOR -->
+        <record id="base.ECS" model="res.currency"> 
+                <field name="afip_code">036</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- BRASIL -->
+        <record id="base.BRL" model="res.currency"> 
+                <field name="afip_code">012</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- PERU -->
+        <record id="base.PEN" model="res.currency"> 
+                <field name="afip_code">035</field>
+                <field name="active">True</field>
+        </record>
+        
+        <!-- EURO --> 
+        <record id="base.EUR" model="res.currency"> 
+                <field name="afip_code">060</field>
+                <field name="active">True</field>
+        </record> 
+        
+        
+        
+        
+<!-- UNIDADES DE BAJA NECESIDAD --> 
+ 
+ 
+ 
+        
+        <!-- RAND SUDAFRICANO -->
+        <record id="base.ZAR" model="res.currency"> 
+                <field name="afip_code">034</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- ISRAEL SHEKEL --> 
+        <record id="base.ILS" model="res.currency"> 
+                <field name="afip_code">030</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- CORONAS DANESAS -->
+        <record id="base.DKK" model="res.currency"> 
+                <field name="afip_code">014</field>
+                <field name="active">True</field>
+        </record>
+        
+        <!-- CORONAS NORUEGAS --> 
+        <record id="base.NOK" model="res.currency"> 
+                <field name="afip_code">015</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- CORONAS SUECAS -->
+        <record id="base.SEK" model="res.currency"> 
+                <field name="afip_code">016</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- CORONA CHECA -->
+        <record id="base.CZK" model="res.currency"> 
+                <field name="afip_code">024</field>
+                <field name="active">True</field>
+        </record>
+        
+        <!-- DINAR YUGOSLAVO --> 
+        <record id="base.YUM" model="res.currency"> 
+                <field name="afip_code">025</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- FLORIN (ANTILLAS HOLANDESAS) --> 
+        <record id="base.ANG" model="res.currency"> 
+                <field name="afip_code">028</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- ZLOTY POLACO -->
+        <record id="base.PLN" model="res.currency"> 
+                <field name="afip_code">061</field>
+                <field name="active">True</field>
+        </record> 
+        
+        <!-- FRANCO SUIZO --> 
+        <record id="base.CHF" model="res.currency"> 
+                <field name="afip_code">009</field>
+                <field name="active">True</field>
+        </record> 
+
+
+    </data>
+</openerp>

=== added file 'l10n_ar_wsafip_fex/data/wsafip_fex_config.xml'
--- l10n_ar_wsafip_fex/data/wsafip_fex_config.xml	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/data/wsafip_fex_config.xml	2014-01-09 17:56:50 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<openerp>
+    <data>
+
+    <!-- Generate request -->
+
+        <record id="view_wsafip_fex_config" model="ir.ui.view">
+            <field name="name">l10n_ar_wsafip_fex.config.form</field>
+            <field name="model">l10n_ar_wsafip_fex.config</field>
+            <field name="inherit_id" ref="base.res_config_view_base"/>
+            <field name="arch" type="xml">
+              <data>
+                <form position="attributes" version="7.0">
+                    <attribute name="string">AFIP Web service Configuration - Request Generation</attribute>
+                </form>
+                <group string="res_config_contents" position="replace">
+                    <group colspan="8">
+                        <field name="company_id" widget="selection" on_change="update_data(company_id)"/>
+                        <field name="wsfex_certificate_id" widget="selection"/>
+                        <field name="wsfex_for_homologation"/>
+                        <field name="wsfex_point_of_sale"/>
+                    </group>
+                </group>
+              </data>
+            </field>
+        </record>
+
+        <record id="action_wsafip_fex_config" model="ir.actions.act_window">
+            <field name="name">Export Electronic Invoice Configuration</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">l10n_ar_wsafip_fex.config</field>
+            <field name="view_id" ref="view_wsafip_fex_config"/>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+        </record>
+
+        <record id="wsafip_fex_config_todo" model="ir.actions.todo">
+            <field name="name">AFIP Export Electronic Invoice Web service Configuration - Setting POS</field>
+            <field name="action_id" ref="action_wsafip_fex_config"/>
+            <field name="sequence">40</field>
+            <field name="type">automatic</field>
+        </record>
+        
+        
+        <record id="invoice_installer_todo" model="ir.actions.todo">
+            <field name="name">Argentina Invoices/Journals Configuration</field>
+            <field name="action_id" ref="l10n_ar_invoice.action_invoice_ar_installer"/>
+            <field name="sequence">20</field>
+            <field name="type">automatic</field>
+        </record>
+
+    </data>
+</openerp>
+<!-- vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+     -->

=== modified file 'l10n_ar_wsafip_fex/data/wsafip_server.xml'
--- l10n_ar_wsafip_fex/data/wsafip_server.xml	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/data/wsafip_server.xml	2014-01-09 17:56:50 +0000
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C), 2012, OpenERP - Team de Localización Argentina.
- https://launchpad.net/~openerp-l10n-ar-localization
+ Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+ All Rights Reserved
+
+ Author : Dario Kevin De Giacomo (Elepe Servicios)
 
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
@@ -17,7 +19,7 @@
  along with this program. If not, see <http://www.gnu.org/licenses/>.
 -->
 <openerp>
-    <data>
+    <data noupdate="1">
 
     <record model='wsafip.server' id='wsfex_prod'>
         <field name='name'>Factura Electrónica de Exportación</field>
@@ -32,27 +34,6 @@
         <field name='class'>homologation</field>
         <field name='url'>https://wswhomo.afip.gov.ar/wsfexv1/service.asmx</field>
     </record>
-
-
-    <!-- Update Languages Action -->
-    <record id="action_server_wsfex_update_languages" model="ir.actions.server">
-            <field name="name">Update Languages</field>
-            <field name="condition">obj.server_id.code == 'wsfex'</field>
-            <field name="type">ir.actions.server</field>
-            <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
-            <field name="state">code</field>
-            <field name="code">obj.server_id.wsfex_update_languages(obj.id)</field>
-    </record>
-
-    <record model="ir.values" id="action_server_wsfex_update_languages">
-            <field name="name">action_module_wsfex_update_languages</field>
-            <field name="action_id" ref="action_server_wsfex_update_languages" />
-            <field name="value" eval="'ir.actions.server,' + str(ref('action_server_wsfex_update_languages'))" />
-            <field name="key">action</field>
-            <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
-            <field name="model">wsafip.connection</field>
-            <field name="key2">client_action_multi</field>
-    </record>
     
     
     <!-- Update Incoterms Action -->
@@ -76,41 +57,20 @@
     </record>
 
 
-    <!-- Update Currency Action -->
-    <record id="action_server_wsfex_update_currency" model="ir.actions.server">
-            <field name="name">Update Currency</field>
-            <field name="condition">obj.server_id.code == 'wsfex'</field>
-            <field name="type">ir.actions.server</field>
-            <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
-            <field name="state">code</field>
-            <field name="code">obj.server_id.wsfex_update_currency(obj.id)</field>
-    </record>
-
-    <record model="ir.values" id="action_wsfex_update_currency">
-            <field name="name">action_module_wsfex_update_currency</field>
-            <field name="action_id" ref="action_server_wsfex_update_currency" />
-            <field name="value" eval="'ir.actions.server,' + str(ref('action_server_wsfex_update_currency'))" />
-            <field name="key">action</field>
-            <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
-            <field name="model">wsafip.connection</field>
-            <field name="key2">client_action_multi</field>
-    </record>
-    
-    
-    <!-- Update UoM Action -->
-    <record id="action_server_wsfex_update_uom" model="ir.actions.server">
-            <field name="name">Update Units of Measure</field>
-            <field name="condition">obj.server_id.code == 'wsfex'</field>
-            <field name="type">ir.actions.server</field>
-            <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
-            <field name="state">code</field>
-            <field name="code">obj.server_id.wsfex_update_uom(obj.id)</field>
-    </record>
-
-    <record model="ir.values" id="action_server_wsfex_update_uom">
-            <field name="name">action_module_wsfex_update_uom</field>
-            <field name="action_id" ref="action_server_wsfex_update_uom" />
-            <field name="value" eval="'ir.actions.server,' + str(ref('action_server_wsfex_update_uom'))" />
+    <!-- Update Currency Rates Action -->
+    <record id="action_server_wsfex_update_currency_rates" model="ir.actions.server">
+            <field name="name">Update Currency Rates</field>
+            <field name="condition">obj.server_id.code == 'wsfex'</field>
+            <field name="type">ir.actions.server</field>
+            <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
+            <field name="state">code</field>
+            <field name="code">obj.server_id.wsfex_update_currency_rates(obj.id)</field>
+    </record>
+
+    <record model="ir.values" id="action_wsfex_update_currency_rates">
+            <field name="name">action_module_wsfex_update_currency_rates</field>
+            <field name="action_id" ref="action_server_wsfex_update_currency_rates" />
+            <field name="value" eval="'ir.actions.server,' + str(ref('action_server_wsfex_update_currency_rates'))" />
             <field name="key">action</field>
             <field name="model_id" ref="l10n_ar_wsafip.model_wsafip_connection" />
             <field name="model">wsafip.connection</field>

=== removed directory 'l10n_ar_wsafip_fex/i18n'
=== removed file 'l10n_ar_wsafip_fex/i18n/es_AR.po'
--- l10n_ar_wsafip_fex/i18n/es_AR.po	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/i18n/es_AR.po	1970-01-01 00:00:00 +0000
@@ -1,288 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# 	* l10n_ar_wsafip
-# Cristian S. Rocha <cristian.rocha@xxxxxxxxxxxxxxxxxxxxxxxx>, 2013.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 7.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-25 13:25+0000\n"
-"PO-Revision-Date: 2013-09-25 10:37-0300\n"
-"Last-Translator: Cristian S. Rocha <cristian.rocha@xxxxxxxxxxxxxxxxxxxxx."
-"ar>\n"
-"Language-Team: Español Argentina <cristian.rocha@xxxxxxxxxxxxxxxxxxxxxxxx>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,city:0
-msgid "City"
-msgstr "Ciudad"
-
-#. module: l10n_ar_wsafip
-#: model:res.groups,name:l10n_ar_wsafip.group_wsafip_admin
-msgid "AFIP WebService Manager"
-msgstr "Administrador del WebService"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.act_wsafip_auth
-msgid "AFIP Connections"
-msgstr "Conexiones AFIP"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,cuit:0
-msgid "CUIT"
-msgstr "CUIT"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Invalid"
-msgstr "Inválido"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,state_id:0
-msgid "State"
-msgstr "Estado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,certificate:0
-msgid "Certificate Signer"
-msgstr "Firmante del Certificado"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.action_wsafip_loadcert_config
-#: view:l10n_ar_wsafip.loadcert_config:0
-msgid "AFIP Web service Configuration - Load Certificate"
-msgstr "Configuración del WebService del AFIP - Carga del Certificado"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,department:0
-msgid "Department"
-msgstr "Departamento\t"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_l10n_ar_wsafip_loadcert_config
-msgid "l10n_ar_wsafip.loadcert_config"
-msgstr "Configuración del WebService del AFIP - Carga del Certificado"
-
-#. module: l10n_ar_wsafip
-#: view:wsafip.connection:0
-msgid "AFIP Authorization"
-msgstr "Autorización del AFIP"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_wsafip_server
-msgid "wsafip.server"
-msgstr "Servidor"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,name:0 field:wsafip.connection,name:0
-#: field:wsafip.server,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,state:0
-msgid "Status"
-msgstr "Estado"
-
-#. module: l10n_ar_wsafip
-#: model:res.groups,name:l10n_ar_wsafip.group_wsafip_user
-msgid "AFIP WebService User"
-msgstr "Usuario del Webservice del AFIP"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,server_id:0
-msgid "Service Server"
-msgstr "Servidor"
-
-#. module: l10n_ar_wsafip
-#: model:ir.module.category,description:l10n_ar_wsafip.module_category_l10n_ar_wsafip
-msgid "Argentine Web Service Localization"
-msgstr "Localización Argentina de WebService"
-
-#. module: l10n_ar_wsafip
-#: model:ir.ui.menu,name:l10n_ar_wsafip.menu_action_wsafip_auth
-msgid "Sessions"
-msgstr "Sesiones"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.loadcert_config,request_string:0
-msgid "Certificate string"
-msgstr "Texto del certificado"
-
-#. module: l10n_ar_wsafip
-#: view:wsafip.server:0
-msgid "AFIP server"
-msgstr "Servidor del AFIP"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_wsafip_connection
-msgid "wsafip.connection"
-msgstr "Conexión"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.action_wsafip_keygen_config
-#: view:l10n_ar_wsafip.keygen_config:0
-msgid "AFIP Web service Configuration - Request Generation"
-msgstr "Configuración del WebService del AFIP - Generación del Requerimiento"
-
-#. module: l10n_ar_wsafip
-#: view:l10n_ar_wsafip.keygen_config:0 view:l10n_ar_wsafip.loadcert_config:0
-msgid "res_config_contents"
-msgstr "Contenidos"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Connected"
-msgstr "Conectado"
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:174
-#, python-format
-msgid "Please check if your VAT is an Argentina one before continue."
-msgstr "Verifique que su CUIT es de Argentina antes de continuar."
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:174
-#, python-format
-msgid "Error in VATs"
-msgstr "Error en el CUIT"
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:186
-#, python-format
-msgid "Certificate Error"
-msgstr "Error en el Certificado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.server,class:0
-msgid "Class"
-msgstr "Clase"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,generationtime:0
-msgid "Generation Time"
-msgstr "Fecha de Generación"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Disconnected"
-msgstr "Desconectado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.server,url:0
-msgid "URL"
-msgstr "URL"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,country_id:0
-msgid "Country"
-msgstr "País"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.server,class:0
-msgid "Homologation"
-msgstr "Homologación"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,token:0
-msgid "Token"
-msgstr "Token"
-
-#. module: l10n_ar_wsafip
-#: model:ir.model,name:l10n_ar_wsafip.model_l10n_ar_wsafip_keygen_config
-msgid "l10n_ar_wsafip.keygen_config"
-msgstr "Generación de Clave"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,batch_sequence_id:0
-msgid "Batch Sequence"
-msgstr "Secuencia de Lote"
-
-#. module: l10n_ar_wsafip
-#: view:wsafip.connection:0
-msgid "Login"
-msgstr "Login"
-
-#. module: l10n_ar_wsafip
-#: model:ir.module.category,name:l10n_ar_wsafip.module_category_l10n_ar_wsafip
-#: model:ir.ui.menu,name:l10n_ar_wsafip.menu_wsafip
-msgid "AFIP Web Services"
-msgstr "Servicios Web del AFIP"
-
-#. module: l10n_ar_wsafip
-#: code:addons/l10n_ar_wsafip/wsafip_connection.py:190
-#, python-format
-msgid "AFIP Message"
-msgstr "Mensaje del AFIP"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.server,code:0
-msgid "Code"
-msgstr "Código"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.connection,state:0
-msgid "Clock shifted"
-msgstr "Reloj desincronizado"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,uniqueid:0
-msgid "Unique ID"
-msgstr "Identificación única"
-
-#. module: l10n_ar_wsafip
-#: model:ir.actions.act_window,name:l10n_ar_wsafip.act_wsafip_server
-#: view:wsafip.connection:0 view:wsafip.server:0
-msgid "AFIP Servers"
-msgstr "Servidores"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,expirationtime:0
-msgid "Expiration Time"
-msgstr "Fecha de Expiración"
-
-#. module: l10n_ar_wsafip
-#: model:ir.ui.menu,name:l10n_ar_wsafip.menu_action_wsafip_server
-msgid "Servers"
-msgstr "Servidores"
-
-#. module: l10n_ar_wsafip
-#: selection:wsafip.server,class:0
-msgid "Production"
-msgstr "Producción"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.loadcert_config,request_id:0
-msgid "Certificate Request"
-msgstr "Requerimiento de Certificación"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,sign:0
-msgid "Sign"
-msgstr "Firma"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,partner_id:0
-msgid "Partner"
-msgstr "Razón Social"
-
-#. module: l10n_ar_wsafip
-#: field:wsafip.connection,logging_id:0
-msgid "Authorization Server"
-msgstr "Servidor de Autorización"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.keygen_config,company_id:0
-msgid "Company"
-msgstr "Compañia"
-
-#. module: l10n_ar_wsafip
-#: field:l10n_ar_wsafip.loadcert_config,response_string:0
-msgid "Response string"
-msgstr "Texto de respuesta"

=== modified file 'l10n_ar_wsafip_fex/invoice.py'
--- l10n_ar_wsafip_fex/invoice.py	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/invoice.py	2014-01-09 17:56:50 +0000
@@ -28,38 +28,171 @@
 # Number Filter
 re_number = re.compile(r'\d{8}')
 
-def _calc_concept(product_types):
-    if product_types == set(['consu']):
-        concept = '1'
-    elif product_types == set(['service']):
-        concept = '2'
-    elif product_types == set(['consu','service']):
-        concept = '4'
-    else:
-        concept = False
-    return concept
-
 class invoice(osv.osv):
 
-    def _get_concept(self, cr, uid, ids, name, args, context=None):
-        r = {}
-        for inv in self.browse(cr, uid, ids):
-            concept = False
-            product_types = set([ line.product_id.type for line in inv.invoice_line ])
-            r[inv.id] = _calc_concept(product_types)
-        return r
-
     _inherit = "account.invoice"
     _columns = {
+        'afip_export_id': fields.integer('ID', size=15),
+        'afip_export_concept': fields.selection([('1','Exportacion Definitiva de Bienes'),
+                                                 ('2','Servicios'),
+                                                 ('4','Otros')],
+                                                 'AFIP Export concept', 
+                                                 select=True, 
+                                                 required=True),
+        'afip_export_lang_invoice': fields.selection([('1','Español'),
+                                                      ('2','Ingles'),
+                                                      ('3','Portugues')],
+                                                      'AFIP Invoice Language', 
+                                                      select=True, 
+                                                      required=True),
+        'afip_export_obs_com': fields.text('Trade Observations'),
+        'afip_export_incoterm': fields.many2one('afip.incoterms', 'Incoterm'),
+        'afip_export_exist_perm' : fields.selection([('S','Yes'), 
+                                                     ('N','No')], 
+                                                     'Has export permissions', 
+                                                     select=True, 
+                                                     required=True),
+        'afip_export_permissions': fields.one2many('afip.export.permissions', 'invoice_id', 'Permisos'),
+        'afip_export_rsp': fields.related('partner_id', 'responsability_id', string='Customer Responsability Relation'),
+        'afip_export_rspn': fields.related('afip_export_rsp', 'code', type='char', store=True, string='AFIP Responsability CODE'),
+        'afip_export_dst_pais': fields.many2one('res.country', 'Destination Country'),
     }
 
     _defaults = {
+        'afip_export_exist_perm': 'N',
     }
     
+    def onchange_partner_id(self, cr, uid, ids, type, partner_id, date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
+        result = {}
+        result = super(invoice,self).onchange_partner_id(cr, uid, ids, type, partner_id, date_invoice, payment_term, partner_bank_id, company_id)
+        if partner_id:
+            partner = self.pool.get('res.partner').browse(cr, uid, partner_id)
+            if partner:
+                rsp_code = partner.responsability_id.code
+                country_code = partner.country_id.id
+                if rsp_code:
+                    result['value']['afip_export_rspn'] = rsp_code
+                if country_code:
+                    result['value']['afip_export_dst_pais'] = country_code
+        return result
+
+    def get_fex_item(self, cr, uid, ids, *args):
+        r = {}
+        _ids = [ids] if isinstance(ids, int) else ids
+
+        for inv in self.browse(cr, uid, _ids):
+            r[inv.id] = []
+            ##Pro_codigo --> NOT REQUIRED. CODIGO INTERNO DEL PRODUCTO/SERVICIO.
+            for item in inv.invoice_line:
+                #~ import pdb; pdb.set_trace()
+                uom = item.uos_id.afip_code
+                if uom in [0, 97, 99]:
+                    r[inv.id].append({
+                        'Pro_codigo': item.product_id.default_code if item.product_id.default_code else '',
+                        'Pro_ds': item.name,
+                        'Pro_qty': 0,
+                        'Pro_umed': item.uos_id.afip_code,
+                        'Pro_precio_uni': 0,
+                        'Pro_bonificacion': 0,
+                        'Pro_total_item': item.price_subtotal,
+                    })
+                else:
+                    r[inv.id].append({
+                        'Pro_codigo': item.product_id.default_code if item.product_id.default_code else '',
+                        'Pro_ds': item.name,
+                        'Pro_qty': item.quantity,
+                        'Pro_umed': item.uos_id.afip_code, 
+                        'Pro_precio_uni': item.price_unit,
+                        'Pro_bonificacion': ((item.price_unit/100)*item.discount)*item.quantity,
+                        'Pro_total_item': item.price_subtotal,
+                    })
+
+        return r[ids] if isinstance(ids, int) else r
+        
+    def get_fex_permiso(self, cr, uid, ids, *args):
+        r = {}
+        _ids = [ids] if isinstance(ids, int) else ids
+
+        for inv in self.browse(cr, uid, _ids):
+            r[inv.id] = []
+            if inv.afip_export_exist_perm == "N":
+                return
+            for item in inv.afip_export_permissions:
+                if not item.valid_permission:
+                    continue
+                r[inv.id].append({
+                    'Id_permiso': item.permission_code,
+                    'Dst_merc': item.dst_merc.afip_code,
+                })
+
+        return r[ids] if isinstance(ids, int) else r
+        
+    def get_fex_existepermiso(self, cr, uid, ids, *args):
+
+        _ids = [ids] if isinstance(ids, int) else ids
+
+        inv = self.browse(cr, uid, _ids)[0]
+        if inv.afip_export_exist_perm == "N":
+            tipo_expo = inv.afip_export_concept
+            comprobante = inv.journal_id.journal_class_id.afip_code
+            if int(tipo_expo) in [2, 4]:
+                return ''
+            elif int(comprobante) in [20, 21]:
+                return ''
+            else:
+                return 'N'
+        elif inv.afip_export_exist_perm == "S":
+            return 'S'
+        else:
+            return ''
+        
+    def get_fex_cuit_pais(self, cr, uid, ids, *args):
+        
+        cuit = 0
+        
+        inv = self.browse(cr, uid, ids)
+
+        if inv.partner_id.is_company == True:
+            if inv.partner_id.country_id.cuit_juridica != False:
+                cuit = inv.partner_id.country_id.cuit_juridica 
+            else:
+                cuit = inv.partner_id.document_number
+        else:
+            if inv.partner_id.country_id.cuit_fisica != False:
+                cuit = inv.partner_id.country_id.cuit_fisica
+            else:
+                cuit = inv.partner_id.document_number
+        
+        return cuit
+    
+    def get_fex_related_invoices(self, cr, uid, ids, *args):
+        """
+        List related invoice information to fill CbtesAsoc
+        """
+        r = {}
+        _ids = [ids] if isinstance(ids, int) else ids
+
+        for inv in self.browse(cr, uid, _ids):
+            r[inv.id] = []
+            rel_inv_ids = self.search(cr, uid, [('number','=',inv.origin),
+                                                ('state','not in',['draft','proforma','proforma2','cancel'])])
+            for rel_inv in self.browse(cr, uid, rel_inv_ids):
+                journal = rel_inv.journal_id
+                r[inv.id].append({
+                    'Cbte_tipo': journal.journal_class_id.afip_code,
+                    'Cbte_punto_vta': journal.point_of_sale,
+                    'Cbte_nro': rel_inv.invoice_number,
+                    'Cbte_cuit': '', #COMPLETAR
+                })
+
+        return r[ids] if isinstance(ids, int) else r
+    
     def copy(self, cr, uid, id, default=None, context=None):
         default = default or {}
         default.update({
-            'state':'draft',
+            'afip_export_id': False,
+            'afip_export_permissions': False,
+            'state': 'draft',
             'afip_error_id': False,
             'afip_batch_number': False,
             'afip_cae_due': False,
@@ -69,9 +202,76 @@
             'date_due': default.get('date_due', False)
         })
         return super(invoice, self).copy(cr, uid, id, default, context)
+    
+    def onchange_permissions(self, cr, uid, ids, afip_export_exist_perm, context=None):
+        
+        if ids:
+            if afip_export_exist_perm: 
+                if afip_export_exist_perm == 'S':
+                    return True
+                else:
+                    cr.execute('DELETE FROM afip_export_permissions WHERE invoice_id=%s',(ids))
+                    return {'value': {'afip_export_permissions': False}}
+            else:
+                cr.execute('DELETE FROM afip_export_permissions WHERE invoice_id=%s',(ids))
+                return {'value': {'afip_export_permissions': False}}
+        else:
+            return True
+            
+    def onchange_concept_export(self, cr, uid, ids, afip_export_concept, context=None):
+        if afip_export_concept: 
+            if afip_export_concept == "1":
+                self.write(cr, uid, ids, {'afip_export_exist_perm': 'S'})
+                return {'value': {'afip_export_exist_perm': 'S'}}
+            else:
+                self.write(cr, uid, ids, {'afip_export_exist_perm': 'N'})
+                return {'value': {'afip_export_exist_perm': 'N'}}
+        return True
+            
+    def button_check_permissions(self, cr, uid, ids, context=None):
+        result = ""
+        list_of_permissions = self.pool.get('account.invoice').browse(cr, uid, ids)[0].afip_export_permissions
+        self.write(cr, uid, ids, {'afip_export_exist_perm': 'S'})
+        if not list_of_permissions:
+                raise osv.except_osv(_(u'Error!'),
+                                     _(u'Debe cargar permiso(s) antes de poder chequearlo(s).'))
+        for permission in list_of_permissions:
+            if not permission.dst_merc:
+                raise osv.except_osv(_(u'Error!'),
+                                     _(u'Primero debe elegir el pais de destino.'))
+            if not permission.permission_code or len(permission.permission_code) < 16:
+                raise osv.except_osv(_(u'Error!'),
+                                     _(u'El codigo del permiso debe estar completo.')) 
+            inv = self.browse(cr, uid, ids)[0]
+            conn = inv.journal_id.afip_connection_id
+            if not conn:
+                raise osv.except_osv(_(u'Connection Error'),
+                                     _(u'No hay una conexión definida! Cree/seleccione una sesión válida o hable con su administrador del sistema.'))
+                                     
+            if conn and conn.server_id.code == 'wsfex':
+                try:
+                    result = conn.server_id.wsfex_check_permissions(conn.id, permission.permission_code, permission.dst_merc.afip_code, context)
+                    if result.get(conn.server_id.id) != 'OK':
+                        raise osv.except_osv(_(u'Error!'),
+                                             _(u'El permiso "'+permission.permission_code+'" no es valido!'))
+                    else:
+                        permission.write({'valid_permission': True}) 
+                except:
+                    result = False
+                    raise osv.except_osv(_(u'Error!'),
+                                         _(u'No se pudo chequear el permiso.')) 
+                                         
+        if result == "":
+            raise osv.except_osv(_(u'Error!'),
+                                 _(u'Chequee que el diario elegido sea el correcto.'))
+        if result.get(conn.server_id.id) == 'OK': 
+            #~ 
+            return True
+        else:
+            raise osv.except_osv(_(u'Error!'),
+                                 _(u'Uno o más permisos son inválidos. Verifique.')) 
 
     def action_retrieve_cae(self, cr, uid, ids, context=None):
-        
         """
         Contact to the AFIP to get a CAE number.
         """
@@ -83,11 +283,38 @@
         conn_obj = self.pool.get('wsafip.connection')
         serv_obj = self.pool.get('wsafip.server')
         currency_obj = self.pool.get('res.currency')
+        
 
+        next_id = 0
         Servers = {}
         Requests = {}
         Inv2id = {}
         for inv in self.browse(cr, uid, ids, context=context):
+
+            #CHEQUEO DE PERMISOS.
+            concept = inv.afip_export_concept
+            exist_perm = inv.afip_export_exist_perm
+            permissions = inv.afip_export_permissions
+            has_valid_perm = False
+            
+            if concept == "1":
+                if not permissions:
+                    raise osv.except_osv(_(u'Error!'),
+                                         _(u'Si se declara que hay permisos, debe haber al menos uno ingresado (y validado) para continuar'))
+                else:
+                    for perm in permissions:
+                        if perm.valid_permission:
+                            has_valid_perm = True
+                            break
+                        else:
+                            continue
+                    if not has_valid_perm:
+                        raise osv.except_osv(_(u'Error!'),
+                                             _(u'Si se declara que hay permisos, debe haber al menos uno ingresado (y validado) para continuar'))
+
+                    
+                    
+            
             journal = inv.journal_id
             conn = journal.afip_connection_id
 
@@ -102,54 +329,65 @@
             # Take the last number of the "number".
             # Could not work if your number have not 8 digits.
             invoice_number = int(re_number.search(inv.number).group())
+            
+            last_id = serv_obj.wsfex_get_last_id(cr, uid, [conn.server_id.id], conn.id)            
+            next_id = last_id + 1
 
             _f_date = lambda d: d and d.replace('-','')
-
+            
+            if journal.journal_class_id.afip_code not in [19, 20, 21]: 
+                raise osv.except_osv(_(u'Error!'),
+                                     _(u'El comprobante debe estar entre los permitidos por WSFEX'))
+                                     
             # Build request dictionary
             if conn.id not in Requests: Requests[conn.id] = {}
             Requests[conn.id][inv.id]=dict( (k,v) for k,v in {
-                'Id': journal.point_of_sale, ######## EDIT (AVERIGUAR ID)
-                'CbteFch': _f_date(inv.date_invoice),
-                'CbteTipo': journal.journal_class_id.afip_code,
-                'PtoVta': journal.point_of_sale,
-                'CbteNro': journal.point_of_sale, ########## BUSCAR NUMERO (00000103 por ej)
-                'TipoExpo': inv.afip_concept, ############## EDITAR PARA QUE SEA TIPO_EXPO DIFERENTE AL DE LA WSFE
-                
-                'Permisos': { 'Permiso': self.get_permiso(cr, uid, inv.id) },
-                
-                'DstCmp': inv.partner_id.country_id.afip_code,
+                'Id': next_id,
+                'Fecha_cbte': _f_date(inv.date_invoice),
+                'Cbte_Tipo': journal.journal_class_id.afip_code,
+                'Punto_vta': journal.point_of_sale,
+                'Cbte_nro': invoice_number,
+                'Tipo_expo': inv.afip_export_concept,
+                
+                'Permiso_existente': self.get_fex_existepermiso(cr, uid, inv.id),
+                'Permisos': { 'Permiso': self.get_fex_permiso(cr, uid, inv.id) },
+                
+                'Dst_cmp': inv.afip_export_dst_pais.afip_code,
                 'Cliente': inv.partner_id.name,
-                'CuitPaisCliente': inv.partner_id.country_id.cuit_juridica if inv.partner_id.is_company == True else inv.partner_id.country_id.cuit_fisica,
-                'DomicilioCliente': inv.partner_id.street+", "+inv.partner_id.city,
-                'IdImpositivo': ######### AVERIGUAR COMO COMPLETAR ESTE CAMPO
-                
-                'MonId': inv.currency_id.afip_code,
-                'MonCotiz': currency_obj.compute(cr, uid, inv.currency_id.id, inv.company_id.currency_id.id, 1.),
-                
-                'ObsComerciales': inv.comment, ####### NECESARIO HACER UN CAMPO NUEVO LLAMADO OBS COMERCIALES?
-                'ImpTotal': inv.amount_total,
+                'Cuit_pais_cliente': self.get_fex_cuit_pais(cr, uid, inv.id),
+                'Domicilio_cliente': inv.partner_id.street+", "+inv.partner_id.city,
+                'Id_impositivo': None, # ID DE LOS IMPUESTOS DE CADA PAIS: por ejemplo en uruguay es RUT.
+                
+                'Moneda_Id': inv.currency_id.afip_code,
+                'Moneda_ctz': currency_obj.compute(cr, uid, inv.currency_id.id, inv.company_id.currency_id.id, 1.),
+                
+                'Obs_comerciales': inv.afip_export_obs_com,
+                'Imp_total': inv.amount_total,
                 'Obs': inv.comment,
                 
-                'CbtesAsoc': {'CbteAsoc': self.get_related_invoices(cr, uid, inv.id) },
-                
-                'FormaPago': inv.payment_term,
-                'Incoterms': inv.payment_term, ####### HACER FUNCIONALIDAD DE INCOTERMS
-                'IncotermsDs': inv.payment_term, ####### HACER FUNCIONALIDAD DE INCOTERMS DESCRIPTION (VACIO WHEN Incoterms == None)
-                'IdiomaCbte': inv.payment_term, ####### HACER FUNCIONALIDAD IDIOMAS (son solo 3, necesario hacer una tabla?)
-                
-                'Items': { 'Item': self.get_item(cr, uid, inv.id) }, ####### HACER FUNCIONALIDAD ITEMS
+                'Cmps_asoc': {'Cmp_asoc': self.get_fex_related_invoices(cr, uid, inv.id) },
+                
+                'Forma_pago': inv.payment_term.name,
+                'Incoterms': inv.afip_export_incoterm.afip_export_incoterm_code,
+                'Incoterms_Ds': inv.afip_export_incoterm.afip_export_incoterm_desc if inv.afip_export_incoterm.afip_export_incoterm_code else "", # MODIFICAR A QUE SEA ESCRITO POR EL USUARIO. ESTA TEMPORALMENTE DEFINIDO COMO SU PROPIA DESCRIPCION
+                'Idioma_cbte': inv.afip_export_lang_invoice,
+                
+                'Items': { 'Item': self.get_fex_item(cr, uid, inv.id) },
                 
             }.iteritems() if v is not None)
             Inv2id[invoice_number] = inv.id
 
         for c_id, req in Requests.iteritems():
             conn = conn_obj.browse(cr, uid, c_id)
-            res = serv_obj.wsfex_get_cae(cr, uid, [conn.server_id.id], c_id, req) # TODO:
+            res = serv_obj.wsfex_get_cae(cr, uid, [conn.server_id.id], c_id, req)
             for k, v in res.iteritems():
                 if 'CAE' in v:
                     self.write(cr, uid, Inv2id[k], {
+                        'afip_export_id': next_id,
                         'afip_cae': v['CAE'],
                         'afip_cae_due': v['CAEFchVto'],
+                        'afip_soap_request': v['Request'],
+                        'afip_soap_response': v['Response'],
                     })
                 else:
                     msg = 'Factura %s:\n' % k + '\n'.join(
@@ -162,4 +400,7 @@
 
 invoice()
 
+
+
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'l10n_ar_wsafip_fex/journal.py'
--- l10n_ar_wsafip_fex/journal.py	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/journal.py	2014-01-09 17:56:50 +0000
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2013 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,23 +23,72 @@
 from openerp.osv import fields, osv
 from openerp.tools.translate import _
 import logging
+import urllib2
 
 _logger = logging.getLogger(__name__)
+_schema = logging.getLogger(__name__ + '.schema')
 
 class account_journal(osv.osv):
 
 
-    #TODO: aqui deberia estar el _get_afip_items_generated para WSFEX. 
-    def _get_afip_items_generated(self, cr, uid, ids, fields_name, arg, context=None):
-        if context is None:
-            context={}
-        glin = lambda conn, ps, jc: conn.server_id.wsfex_get_last_invoice_number(conn.id, ps, jc)[conn.server_id.id]
+    def _get_fex_afip_state(self, cr, uid, ids, fields_name, arg, context=None):
+
+        if context is None:
+            context={}
+        r={}
+        for journal in self.browse(cr, uid, ids):
+            conn = journal.afip_connection_id
+            if not conn:
+                r[journal.id] = 'not available'
+            elif conn.server_id.code != 'wsfex':
+                r[journal.id] = 'connection_service_error'
+            else:
+                # Try to login just one time.
+                try:
+                    conn.login()
+                    if conn.state not in  [ 'connected', 'clockshifted' ]:
+                        r[journal.id] = 'connection_error'
+                    else:
+                        authserver, appserver, dbserver = conn.server_id.wsfex_get_status(conn.id)[conn.server_id.id]
+                        if authserver == 'OK':
+                            r[journal.id] = 'connected'
+                        else:
+                            if appserver != 'OK':
+                                r[journal.id] = 'connected_but_appserver_error'
+                            elif dbserver != 'OK':
+                                r[journal.id] = 'connected_but_dbserver_error'
+                            else:
+                                r[journal.id] = 'connected_but_servers_error'
+                except urllib2.URLError as e:
+                    if e[0][0] == 101:
+                        r[journal.id] = 'network_down'
+                    if e[0][0] == 104:
+                        r[journal.id] = 'connection_rejected'
+                    elif e[0][0] == -2:
+                        r[journal.id] = 'unknown_service'
+                    else:
+                        r[journal.id] = 'something_wrong'
+                except Exception as e:
+                    r[journal.id] = 'something_wrong'
+                _logger.debug("Connection return: %s" % r[journal.id])
+        return r
+
+    def _get_fex_afip_items_generated(self, cr, uid, ids, fields_name, arg, context=None):
+        if context is None:
+            context={}
+        glinx = lambda conn, ps, jc: conn.server_id.wsfex_get_last_invoice_number(conn.id, ps, jc)[conn.server_id.id]
+        glin = lambda conn, ps, jc: conn.server_id.wsfe_get_last_invoice_number(conn.id, ps, jc)[conn.server_id.id]
         r={}
         for journal in self.browse(cr, uid, ids):
             r[journal.id] = False
             conn = journal.afip_connection_id
             if conn and conn.server_id.code == 'wsfex':
                 try:
+                    r[journal.id] = glinx(conn, journal.point_of_sale, journal.journal_class_id.afip_code)
+                except:
+                    r[journal.id] = False
+            if conn and conn.server_id.code == 'wsfe':
+                try:
                     r[journal.id] = glin(conn, journal.point_of_sale, journal.journal_class_id.afip_code)
                 except:
                     r[journal.id] = False
@@ -46,7 +97,22 @@
     
     _inherit = "account.journal"
     _columns = {
-        'afip_items_generated': fields.function(_get_afip_items_generated, type='integer', string='Number of Invoices Generated',method=True, 
+        'afip_state': fields.function(_get_fex_afip_state, type='selection', string='Connection state',
+                                      method=True, readonly=True,
+                                      selection=[
+                                          ('connected','Connected'),
+                                          ('connection_error','Connection Error'),
+                                          ('connected_but_appserver_error','Application service has troubles'),
+                                          ('connected_but_dbserver_error','Database service is down'),
+                                          ('connected_but_authserver_error','Authentication service is down'),
+                                          ('connected_but_servers_error','Services are down'),
+                                          ('network_down','Network is down'),
+                                          ('unknown_service','Unknown service'),
+                                          ('connection_rejection','Connection reseted by host'),
+                                          ('something_wrong','Not identified error'),
+                                      ],
+                            help="Connect to the AFIP and check service status."),
+        'afip_items_generated': fields.function(_get_fex_afip_items_generated, type='integer', string='Number of Invoices Generated',method=True, 
                             help="Connect to the AFIP and check how many invoices was generated.", readonly=True),
     }
 

=== added file 'l10n_ar_wsafip_fex/product_uom.py'
--- l10n_ar_wsafip_fex/product_uom.py	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/product_uom.py	2014-01-09 17:56:50 +0000
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+from openerp.osv import fields, osv
+
+class product_uom(osv.osv):
+    
+    _name = 'product.uom'
+    _inherit = "product.uom"
+    _columns = {
+        'afip_code': fields.integer('UoM AFIP Code', size=2, required=True),
+    }
+    
+    #wsfex_update_uom <-- se actualiza mediante esa funcion en wsafip_server
+
+product_uom()

=== modified file 'l10n_ar_wsafip_fex/report/invoice.py'
--- l10n_ar_wsafip_fex/report/invoice.py	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/report/invoice.py	2014-01-09 17:56:50 +0000
@@ -23,23 +23,23 @@
 from openerp.report import report_sxw
 from openerp.addons.l10n_ar_invoice.report.invoice import ar_account_invoice
 
-class fe_account_invoice(ar_account_invoice):
+class fex_account_invoice(ar_account_invoice):
 
-    def _is_electronic(self, o):
+    def _is_export_electronic(self, o):
         r = True if o.journal_id.afip_authorization_id else False
         return r
     
     def __init__(self, cr, uid, name, context):
-        super(fe_account_invoice, self).__init__(cr, uid, name, context=context)
+        super(fex_account_invoice, self).__init__(cr, uid, name, context=context)
         self.localcontext.update({
-            'is_electronic': self._is_electronic,
+            'is_export_electronic': self._is_export_electronic,
         })
 
 report_sxw.report_sxw(
-    'report.account.invoice_fe',
+    'report.account.invoice_fex',
     'account.invoice',
-    'addons/l10n_ar_wsafip_fe/report/invoice.rml',
-    parser=fe_account_invoice,
+    'addons/l10n_ar_wsafip_fex/report/invoice.rml',
+    parser=fex_account_invoice,
     header=False
 )
 

=== modified file 'l10n_ar_wsafip_fex/report/invoice.rml'
--- l10n_ar_wsafip_fex/report/invoice.rml	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/report/invoice.rml	2014-01-09 17:56:50 +0000
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <document filename="fe_invoice.pdf">
     <template pageSize="(21cm,29.7cm)"
-        title="Comprobante Impreso de Factura Electrónica para Argentina"
+        title="Comprobante Impreso de Factura Electrónica de Exportación para Argentina"
         author="Team de Localización Argentina"
         allowSplitting="0"
         topMargin="0"
@@ -13,8 +13,8 @@
             <frame id="seller_section"      x1="00.522cm"  y1="23.749cm" width="10.019cm"  height="02.205cm" />
             <frame id="docinfo_section"     x1="11.513cm"  y1="23.749cm" width="09.019cm"  height="04.205cm" />
             <frame id="docclass_section"    x1="09.645cm"  y1="26.551cm" width="01.693cm"  height="01.403cm" />
+            <frame id="buyer_section"       x1="00.522cm"  y1="20.000cm" width="20.010cm"  height="03.000cm" />
             <frame id="date_section"        x1="00.522cm"  y1="22.556cm" width="20.010cm"  height="00.600cm" />
-            <frame id="buyer_section"       x1="00.522cm"  y1="20.000cm" width="20.010cm"  height="03.000cm" />
             <frame id="detail_section"      x1="00.522cm"  y1="09.200cm" width="20.010cm"  height="10.568cm" />
             <frame id="comment_section"     x1="00.522cm"  y1="05.814cm" width="13.000cm"  height="03.415cm" />
             <frame id="total_section"       x1="13.522cm"  y1="05.814cm" width="07.010cm"  height="03.415cm" />
@@ -114,90 +114,78 @@
                 <para style="seller"><b>Condición frente al IVA: </b>[[ company.partner_id.responsability_id.name ]].</para>
             <nextFrame name="docinfo_section"/>
                 <para style="document_class"><b>[[ o.journal_id.journal_class_id.name.split('[')[0] ]]</b></para>
-                <spacer length="0.5cm"/>
+                <spacer length="0.3cm"/>
                 <para style="seller"><b>Punto de Venta: </b>[[ '%04i' % o.journal_id.point_of_sale ]] - <b>Comp. Nro: </b>[[ o.number and o.number[-8:] or '00000000' ]]</para>
-                <para style="seller"><b>Fecha de Emisión: </b>[[ formatLang(o.date_invoice, date=True) ]]</para>
-                <spacer length="0.31cm"/>
+                <para style="seller"><b>Fecha de Emisión: </b>[[ o.date_invoice[8:10] ]]/[[ o.date_invoice[5:7] ]]/[[ o.date_invoice[0:4] ]]</para>
+                <spacer length="0.15cm"/>
                 <para style="seller"><b>[[ company.partner_id.document_type_id.name ]]: </b>[[ company.partner_id.document_number ]]</para>
                 <para style="seller"><b>Ingresos Brutos: </b>[[ company.partner_id.iibb ]]</para>
-                <para style="seller"><b>Fecha de Inicio de Actividades: </b>[[ formatLang(company.partner_id.start_date, date=True) ]]</para>
+                <para style="seller"><b>Fecha de Inicio de Actividades: </b>[[ company.partner_id.start_date[8:10] ]]/[[ company.partner_id.start_date[5:7] ]]/[[ company.partner_id.start_date[0:4] ]]</para>
+                <para style="seller"><b>IVA EXENTO OPERACIÓN DE EXPORTACIÓN</b></para>
                 <nextFrame name="docclass_section"/>
                 <para style="document_class"><b>[[ o.journal_id.journal_class_id.document_class_id.name ]]</b></para>
                 <para style="document_class_code">cod. [[ o.journal_id.journal_class_id.afip_code ]]</para>
-                <nextFrame name="date_section"/>
-                <blockTable rowHeights="0.750" colWidths="6cm,6cm,6cm">
-                    <tr>
-                    <td><para style="dates"><b>Periodo Facturado Desde: </b>[[ formatLang(o.afip_service_start, date=True) ]]</para></td>
-                    <td><para style="dates"><b>Hasta: </b>[[ formatLang(o.afip_service_end, date=True) ]]</para></td>
-                    <td><para style="dates"><b>Fecha de Vto. para el pago: </b>[[ formatLang(o.date_due, date=True) ]]</para></td>
-                    </tr>
-                </blockTable>
                 <nextFrame name="buyer_section"/>
                 <blockTable colWidths="9cm,9cm" style="Client">
                     <tr>
-                    <td><para style="seller"><b>[[ o.partner_id.document_type_id.name ]] : </b>[[ o.partner_id.document_number ]]</para></td>
-                    <td><para style="seller"><b>Nombre y Apellido / Razón Social: </b>[[ o.partner_id.name[:50] ]]</para></td>
-                    </tr>
-                    <tr>
-                    <td><para style="seller"><b>Condición frente al IVA: </b>[[ o.partner_id.responsability_id.name ]]</para></td>
-                    <td><para style="seller"><b>Domicilio: </b>
-                    [[ o.partner_id and o.partner_id.street or '[ERROR!]' ]] 
-                    [[ o.partner_id and o.partner_id.street2 or '' ]], 
-                    [[ ', '.join([ o.partner_id and o.partner_id.city or '',
-                    o.partner_id and o.partner_id.state_id and o.partner_id.state_id.name or '',
-                    o.partner_id and o.partner_id.country_id and o.partner_id.country_id.name or '' ] )]].</para></td>
-                    <para style="seller"><b>Condición frente al IVA: </b>[[ o.partner_id.responsability_id.name ]].</para>
-                    </tr>
-                    <tr>
-                    <td><para style="seller"><b>Condición de venta: </b> Efectivo </para></td>
-                    <td><para style="seller"><b>Nro. Remito: </b>[[ o.origin if o.afip_service_start is None else '-' ]]</para></td>
+                    <td><para style="seller"><b>Señor(es): </b>[[ o.partner_id.name[:50] ]]</para></td>
+                    <td><para style="seller"><b>Domicilio: </b>[[ o.partner_id and o.partner_id.street ]], [[ o.partner_id and o.partner_id.city or '' ]]</para></td>
+                    </tr>
+                    <tr>
+                    <td><para style="seller"><b>CUIT[[ (o.partner_id.country_id.cuit_juridica and ' Pais') or '' ]]: </b>[[ (o.partner_id.country_id.cuit_juridica if o.partner_id.is_company else o.partner_id.country_id.cuit_fisica) or o.partner_id.document_number ]]</para></td>
+                    </tr>Comprobante[[ (o.afip_cae and ' ') or ' No ' ]]Autorizado.
+                    <tr>
+                    <td><para style="seller"><b>ID Impositivo: </b> -- </para></td>
+                    </tr>
+                    <tr>
+                    <td><para style="seller"><b>Divisa: </b>[[ o.currency_id.name ]]</para></td>
+                    </tr>
+                    <tr>
+                    <td><para style="seller"><b>Destino del Comprobante: </b>[[ o.afip_export_dst_pais.name ]]</para></td>
+                    </tr>
+                </blockTable>
+                <nextFrame name="date_section"/>
+                <blockTable rowHeights="0.750" colWidths="9cm,9cm">
+                    <tr>
+                    <td><para style="dates"><b>Forma de Pago: </b>[[ o.payment_term.name or 'No especificado' ]]</para></td>
+                    <td><para style="dates"><b>Incoterms: </b><c>[[ o.afip_export_incoterm.afip_export_incoterm_code or removeParentNode('para') ]]</c></para></td>
                     </tr>
                 </blockTable>
                 <nextFrame name="detail_section"/>
-                <blockTable colWidths="8cm,2cm,2cm,2cm,2cm,2cm,2cm" style="DetailsHeader">
+                <blockTable colWidths="1cm,9cm,2cm,2cm,2cm,2cm,2cm" style="DetailsHeader">
                     <tr>
-                        <td>Producto/Servicio</td>
+                        <td>Ítem</td>
+                        <td>Descripción</td>
                         <td>Cantidad</td>
-                        <td>U.Medida</td>
+                        <td>U. Medida</td>
+                        <td>Bonif.</td>
                         <td>Precio Unit.</td>
-                        <td>% Bonif.</td>
-                        <td>Imp. Bonif.</td>
-                        <td>Subtotal</td>
+                        <td>Total por ítem</td>
                     </tr>
                 </blockTable>
                 <section>
                     <para style="body">[[ repeatIn(o.invoice_line,'l') ]]</para>
-                    <blockTable colWidths="8cm,2cm,2cm,2cm,2cm,2cm,2cm" style="Details">
+                    <blockTable colWidths="1cm,9cm,2cm,2cm,2cm,2cm,2cm" style="Details">
                         <tr>
+                            <td>[[ l.product_id.default_code if l.product_id.default_code else '' ]]</td>
                             <td><para style="small">[[ l.name ]]</para></td>
-                            <td>[[ formatLang(l.quantity) ]]</td>
-                            <td>[[ l.uos_id.name ]]</td>
-                            <td>[[ formatLang(l.price_calc(use_vat=not is_class(o, 'A'), quantity=1, discount=0)[l.id]) ]]</td>
-                            <td>[[ l.discount and formatLang(l.discount) or '-' ]]</td>
-                            <td>[[ l.discount and formatLang(l.price_calc(use_vat=not is_class(o, 'A'), quantity=1)[l.id]) or '-' ]]</td>
-                            <td>[[ formatLang(l.price_calc(use_vat=not is_class(o, 'A'))[l.id]) ]]</td>
+                            <td>[[ formatLang(l.quantity) if l.quantity else '' ]]</td>
+                            <td>[[ l.uos_id.name if l.uos_id else '' ]]</td>
+                            <td>[[ ((l.price_unit/100)*l.discount)*l.quantity if l.discount else '-' ]]</td>
+                            <td>[[ l.price_unit if l.price_unit else '']]</td>
+                            <td>[[ l.price_subtotal ]]</td>
                         </tr>
                     </blockTable>
                 </section>
                 <nextFrame name="comment_section"/>
-                <para style="seller">El presente documento expresa su monto en [[ o.currency_id.name ]].</para>
+                <para style="seller">Tipo de Cambio: [[ o.currency_id.rate if o.currency_id.name != 'ARS' else removeParentNode('para') ]] ----- Divisa: [[ o.currency_id.name ]]</para>
+                <para style="seller">Comentarios: [[ o.comment or removeParentNode('para') ]]</para>
+                <para style="seller">Observaciones comerciales: [[ o.afip_export_obs_com or removeParentNode('para') ]]</para>
                 <nextFrame name="total_section"/>
                 <blockTable rowHeights="2.9cm" colWidths="7.5cm">
                 <tr> <td vAlign="bottom" topPadding="0cm" bottomPadding="0cm" rightPadding="0cm" leftPadding="0cm">
                     <blockTable rowHeights="0.5cm" colWidths="5cm,2cm" style="Total">
                         <tr>
-                            <td>Subtotal: [[ o.currency_id.symbol ]]</td>
-                            <td>[[ formatLang(o.amount_untaxed) if is_class(o, 'A') else formatLang(o.amount_total) ]]</td>
-                        </tr>
-                        <tr>
-                            <td>[[ (is_class(o, 'A') or removeParentNode('tr')) and '' ]] IVA: [[ o.currency_id.symbol ]]</td>
-                            <td>[[ formatLang(o.amount_tax) ]]</td>
-                        </tr>
-                        <tr>
-                            <td>Importe Otros Tributos: [[ o.currency_id.symbol ]]</td>
-                            <td>[[ formatLang(0) ]]</td>
-                        </tr>
-                        <tr>
                             <td>Total: [[ o.currency_id.symbol ]]</td>
                             <td>[[ formatLang(o.amount_total) ]]</td>
                         </tr>

=== added directory 'l10n_ar_wsafip_fex/security'
=== removed directory 'l10n_ar_wsafip_fex/security'
=== added file 'l10n_ar_wsafip_fex/security/ir.model.access.csv'
--- l10n_ar_wsafip_fex/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ l10n_ar_wsafip_fex/security/ir.model.access.csv	2014-01-09 17:56:50 +0000
@@ -0,0 +1,5 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_afip_incoterms_manager,afip_incoterms.manager,model_afip_incoterms,l10n_ar_wsafip_fe.group_wsafip_fe_admin,1,1,1,1
+access_afip_incoterms_user,afip_incoterms.user,model_afip_incoterms,l10n_ar_wsafip_fe.group_wsafip_fe_user,1,0,0,0
+access_afip_export_permissions_manager,afip_export_permissions.manager,model_afip_export_permissions,l10n_ar_wsafip_fe.group_wsafip_fe_admin,1,1,1,1
+access_afip_export_permissions_user,afip_export_permissions.user,model_afip_export_permissions,l10n_ar_wsafip_fe.group_wsafip_fe_user,1,0,0,0

=== removed file 'l10n_ar_wsafip_fex/security/ir.model.access.csv'
--- l10n_ar_wsafip_fex/security/ir.model.access.csv	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_afip_wsfex_error_manager","afip.wsfex_error.manager","model_afip_wsfex_error","group_wsafip_fex_admin",1,1,1,1
-"access_afip_wsfex_error_user","afip.wsfex_error.user","model_afip_wsfex_error","group_wsafip_fex_user",1,0,0,0

=== removed directory 'l10n_ar_wsafip_fex/test'
=== removed file 'l10n_ar_wsafip_fex/test/com_ri1.yml'
--- l10n_ar_wsafip_fex/test/com_ri1.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/com_ri1.yml	1970-01-01 00:00:00 +0000
@@ -1,80 +0,0 @@
-- Setup wizard to select argentine chart
-- !record {model: account.installer, id: acc_wiz_ivari }:
-        company_id: com_ivari
-        charts: l10n_ar_chart_generic
-
-- Execute wizard to create generic chart.
-- !python {model: account.installer }: |
-    self.view_init(cr, uid, [ref("acc_wiz_ivari")], {})
-    self.execute(cr, uid, [ref("acc_wiz_ivari")], {})
-
-- Setup wizard to create generic chart.
-- !record {model: wizard.multi.charts.accounts, id: cha_wiz_ivari }:
-        chart_template_id: l10n_ar_chart_generic.ri_l10nAR_chart_template
-        company_id: com_ivari
-        bank_accounts_id: []
-        code_digits: 8
-        currency_id: 1
-
-- Execute wizard to create generic chart.
-- !python {model: wizard.multi.charts.accounts }: |
-    self.view_init(cr, uid, [ref("acc_wiz_ivari")], {})
-    r = self.onchange_company_id(cr, uid, [ref("cha_wiz_ivari")], ref("com_ivari"))
-    self.write(cr, uid, [ref("cha_wiz_ivari")], r['value'])
-    r = self.onchange_chart_template_id(cr, uid, [ref("cha_wiz_ivari")], ref("l10n_ar_chart_generic.ri_l10nAR_chart_template"))
-    self.write(cr, uid, [ref("cha_wiz_ivari")], r['value'])
-    self.execute(cr, uid, [ref("cha_wiz_ivari")], {})
-
-- Check if chart has been created.
-- !assert {model: wizard.multi.charts.accounts, id: cha_wiz_ivari, string: Select VAT taxes }:
-  - sale_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_ventas")
-  - purchase_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_compras")
-
-- Setup wizard to create journals for responsable inscripto
-- !record {model: l10n_ar_invoice.config, id: inv_wiz_ivari }:
-        company_id: com_ivari
-        cuit: 30712007288
-        iibb: 1248845-03
-        start_date: 2011-09-01
-        responsability_id: !ref {model: afip.responsability, search: "[('name','=','IVA Responsable Inscripto')]"}
-        do_export: False
-        remove_old_journals: True
-        point_of_sale: 1
-
-- Execute Wizard to create journals for responsable inscripto
-- !python {model: l10n_ar_invoice.config }: |
-    self.view_init(cr, uid, [ref("inv_wiz_ivari")], {})
-    self.update_journals(cr, uid, [ref("inv_wiz_ivari")], {})
-    self.execute(cr, uid, [ref("inv_wiz_ivari")], {})
-
-- Check if exists journals associated to this company
-- !python {model: account.journal }: |
-    journal_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    expected_journals = 3 * 3 * 2 + 2
-    # # tipos de documentos, # Clase de Journals, Ventas y Compras, u'Miscellaneous Journal', u'Opening Entries Journal'
-    if (len(journal_ids)!=expected_journals):
-        print [ a.name for a in self.browse(cr, uid, journal_ids) ]
-        raise AssertionError, 'Error in journals creation for Resp. Insc.. Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-- Check if exists periods associated to this company
-- !python {model: account.period }: |
-    period_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    expected_periods=13
-    if (len(period_ids)!=expected_periods):
-        print [ a.name for a in self.browse(cr, uid, period_ids) ]
-        raise AssertionError, 'Error in period creation for Resp. Insc.. Expected %i, exists %i.' % (expected_periods, len(period_ids))
-
-- Setup Wizard to connect to journals to webservice.
-- !record {model: l10n_ar_wsafip_fe.config, id: inv_wiz_ivari_fe }:
-        company_id: com_ivari
-        wsfe_certificate_id: cert_ar_0
-        wsfe_for_homologation: True
-        wsfe_point_of_sale: '1'
-
-- Execute Wizard to connect to journals to webservice.
-- !python {model: l10n_ar_wsafip_fe.config }: |
-    self.execute(cr, uid, [ref("inv_wiz_ivari_fe")], {})
-
-#
-# El responsable inscripto esta listo para facturar electronicamente !!!
-#

=== removed file 'l10n_ar_wsafip_fex/test/com_ri2.yml'
--- l10n_ar_wsafip_fex/test/com_ri2.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/com_ri2.yml	1970-01-01 00:00:00 +0000
@@ -1,85 +0,0 @@
-- Setup wizard to select argentine chart
-- !record {model: account.installer, id: acc_wiz_ivari2 }:
-        company_id: com_ivari2
-        charts: l10n_ar_chart_generic
-
-- Execute wizard to create generic chart.
-- !python {model: account.installer }: |
-    self.view_init(cr, uid, [ref("acc_wiz_ivari2")], {})
-    self.execute(cr, uid, [ref("acc_wiz_ivari2")], {})
-
-- Setup wizard to create generic chart.
-- !record {model: wizard.multi.charts.accounts, id: cha_wiz_ivari2 }:
-        chart_template_id: l10n_ar_chart_generic.ri_l10nAR_chart_template
-        company_id: com_ivari2
-        bank_accounts_id: []
-        code_digits: 8
-        currency_id: 1
-
-- Execute wizard to create generic chart.
-- !python {model: wizard.multi.charts.accounts }: |
-    r = self.onchange_company_id(cr, uid, [ref("cha_wiz_ivari2")], ref("com_ivari2"))
-    self.write(cr, uid, [ref("cha_wiz_ivari2")], r['value'])
-    r = self.onchange_chart_template_id(cr, uid, [ref("cha_wiz_ivari2")], ref("l10n_ar_chart_generic.ri_l10nAR_chart_template"))
-    self.write(cr, uid, [ref("cha_wiz_ivari2")], r['value'])
-    self.execute(cr, uid, [ref("cha_wiz_ivari2")], {})
-
-- Check if chart has been created.
-- !assert {model: wizard.multi.charts.accounts, id: cha_wiz_ivari2, string: Select VAT taxes }:
-  - sale_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_ventas")
-  - purchase_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_compras")
-
-- Setup wizard to create journals for responsable inscripto
-- !record {model: l10n_ar_invoice.config, id: inv_wiz_ivari2 }:
-        company_id: com_ivari2
-        cuit: 30573652084
-        iibb: 1248845-03
-        start_date: 2011-09-01
-        responsability_id: !ref {model: afip.responsability, search: "[('name','=','IVA Responsable Inscripto')]"}
-        do_export: True
-        remove_old_journals: True
-        point_of_sale: 1
-
-- Execute Wizard to create journals for responsable inscripto
-- !python {model: l10n_ar_invoice.config }: |
-    self.view_init(cr, uid, [ref("inv_wiz_ivari2")], {})
-    self.update_journals(cr, uid, [ref("inv_wiz_ivari2")], {})
-    self.execute(cr, uid, [ref("inv_wiz_ivari2")], {})
-
-- Check if exists journals associated to this company
-- !python {model: account.journal }: |
-    journal_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    expected_journals = 3 * 3 * 2 + 2 # # tipos de documentos, # Clase de Journals, Ventas y Compras, u'Miscellaneous Journal', u'Opening Entries Journal'
-    if (len(journal_ids)!=expected_journals):
-        print [ a.name for a in self.browse(cr, uid, journal_ids) ]
-        raise AssertionError, 'Error in journals creation for Resp. Insc.. Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-    journal_ids = self.search(cr, uid, [('company_id.name','=','Cablevision SA.')])
-    expected_journals = 3 * 3 * 2 + 3 + 2 # # tipos de documentos, # Clase de Journals, Ventas y Compras, Ventas de Exportación, u'Miscellaneous Journal', u'Opening Entries Journal'
-    if (len(journal_ids)!=expected_journals):
-        print [ a.name for a in self.browse(cr, uid, journal_ids) ]
-        raise AssertionError, 'Error in journals creation for Resp. Insc.. Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-- Check if exists periods associated to this company
-- !python {model: account.period }: |
-    period_ids = self.search(cr, uid, [('company_id.name','=','Cablevision SA.')])
-    expected_periods=13
-    if (len(period_ids)!=expected_periods):
-        print [ a.name for a in self.browse(cr, uid, period_ids) ]
-        raise AssertionError, 'Error in period creation for Resp. Insc.. Expected %i, exists %i.' % (expected_periods, len(period_ids))
-
-#- Setup Wizard to connect to journals to webservice.
-#- !record {model: l10n_ar_wsafip_fe.config, id: inv_wiz_ivari2_fe }:
-#        company_id: com_ivari2
-#        wsfe_certificate_id: cert_ar_0
-#        wsfe_for_homologation: True
-#        wsfe_point_of_sale: '1'
-#
-#- Execute Wizard to connect to journals to webservice.
-#- !python {model: l10n_ar_wsafip_fe.config }: |
-#    self.execute(cr, uid, [ref("inv_wiz_ivari2_fe")], {})
-
-
-#
-# El responsable inscripto esta listo para facturar !!!
-#

=== removed file 'l10n_ar_wsafip_fex/test/com_rm1.yml'
--- l10n_ar_wsafip_fex/test/com_rm1.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/com_rm1.yml	1970-01-01 00:00:00 +0000
@@ -1,72 +0,0 @@
-#
-# Wizard que selecciona la contabilidad argentina
-#
-- !record {model: account.installer, id: acc_wiz_rm }:
-        company_id: com_rm
-        charts: l10n_ar_chart_generic
-
-
-- !python {model: account.installer }: |
-    self.view_init(cr, uid, [ref("acc_wiz_rm")], {})
-    self.execute(cr, uid, [ref("acc_wiz_rm")], {})
-
-#
-# Wizard que selecciona el plan contable. NOTAR QUE USO EL DE RESPONSABLE INSCRIPTO PORQUE EL DE MONOTRIBUTO NO FUNCIONA!
-#
-- !record {model: wizard.multi.charts.accounts, id: cha_wiz_rm }:
-        chart_template_id: l10n_ar_chart_generic.ri_l10nAR_chart_template
-        company_id: com_rm
-        bank_accounts_id: []
-        code_digits: 8
-        currency_id: 1
-
-- !python {model: wizard.multi.charts.accounts }: |
-    self.view_init(cr, uid, [ref("acc_wiz_rm")], {})
-    r = self.onchange_company_id(cr, uid, [ref("cha_wiz_rm")], ref("com_rm"))
-    self.write(cr, uid, [ref("cha_wiz_rm")], r['value'])
-    r = self.onchange_chart_template_id(cr, uid, [ref("cha_wiz_rm")], ref("l10n_ar_chart_generic.ri_l10nAR_chart_template"))
-    self.write(cr, uid, [ref("cha_wiz_rm")], r['value'])
-    self.execute(cr, uid, [ref("cha_wiz_rm")], {})
-
-- !assert {model: wizard.multi.charts.accounts, id: cha_wiz_rm, string: Select VAT taxes }:
-  - sale_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_ventas")
-  - purchase_tax.id == ref("l10n_ar_chart_generic.ri_tax_vat_21_compras")
-
-#
-# Wizard que crea los journals para un responsable inscripto
-#
-- !record {model: l10n_ar_invoice.config, id: inv_wiz_rm }:
-        company_id: com_rm
-        cuit: 23250954549
-        iibb: 0-0
-        start_date: 2011-09-01
-        responsability_id: l10n_ar_invoice.res_RM
-        do_export: False
-        remove_old_journals: True
-        point_of_sale: 1
-
-- !python {model: l10n_ar_invoice.config }: |
-    self.view_init(cr, uid, [ref("inv_wiz_rm")], {})
-    self.update_journals(cr, uid, [ref("inv_wiz_rm")], {})
-    self.execute(cr, uid, [ref("inv_wiz_rm")], {})
-
-- Check if exists journals associated to this company
-- !python {model: account.journal }: |
-    journal_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    expected_journals = 3 * 3 * 2 + 2 # # tipos de documentos, # Clase de Journals, Ventas y Compras, u'Miscellaneous Journal', u'Opening Entries Journal'
-    if (len(journal_ids)!=expected_journals):
-        print [ a.name for a in self.browse(cr, uid, journal_ids) ]
-        raise AssertionError, 'Error in journals creation for Monotributista Expected %i, exists %i.' % (expected_journals, len(journal_ids))
-
-- Check if exists periods associated to this company
-- !python {model: account.period }: |
-    period_ids = self.search(cr, uid, [('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    expected_periods=13
-    if (len(period_ids)!=expected_periods):
-        print [ a.name for a in self.browse(cr, uid, period_ids) ]
-        raise AssertionError, 'Error in period creation for Resp. Insc.. Expected %i, exists %i.' % (expected_periods, len(period_ids))
-
-#
-# El responsable monotributo esta listo para facturar !!!
-#
-

=== removed file 'l10n_ar_wsafip_fex/test/inv_2iva.yml'
--- l10n_ar_wsafip_fex/test/inv_2iva.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/inv_2iva.yml	1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-#
-#       Create an invoice from Resp Inscr to Resp Inscr.
-#       For two products with different vat
-#
-- Create a simple invoice type A
-- !record {model: account.invoice, id: inv_ri2ri_2iva}:
-    company_id: com_ivari
-    partner_id: par_ivari2
-    journal_id: !ref {model: account.journal, search: "[('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    period_id:  !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    invoice_line:
-      - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-        name: '[PC3] Medium PC'
-        price_unit: 900.0
-        quantity: 10.0
-        product_id: prod_iva21
-        uos_id: product.product_uom_unit
-        invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003004:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-      - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-        name: '[PC4] Big PC'
-        price_unit: 1900.0
-        quantity: 3.0
-        product_id: prod_iva10
-        uos_id: product.product_uom_unit
-        invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-
-- Compute amount
-- !python {model: account.invoice}: |
-    inv_id = [ref('inv_ri2ri_2iva')]
-    self.view_init(cr, uid, inv_id, {})
-    self.button_compute(cr, uid, inv_id)
-
-- Validate invoice
-- !workflow {model: account.invoice, action: invoice_open, ref: inv_ri2ri_2iva}
-
-- Check CAE invoice number
-- !assert {model: account.invoice, id: inv_ri2ri_2iva, string: CAE has been assigned}:
-    - afip_cae != ''
-    - afip_cae_due != ''
-

=== removed file 'l10n_ar_wsafip_fex/test/inv_2prod.yml'
--- l10n_ar_wsafip_fex/test/inv_2prod.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/inv_2prod.yml	1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-#
-#       Create an invoice from Resp Inscr to Resp Inscr.
-#       For two products with vat
-#
-- Create a simple invoice type B
-- !record {model: account.invoice, id: inv_ri2rm_2prod}:
-    company_id: com_ivari
-    partner_id: par_rm
-    journal_id: !ref {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    period_id:  !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    invoice_line:
-      - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-        name: '[PC3] Medium PC'
-        price_unit: 900.0
-        quantity: 10.0
-        product_id: prod_iva21
-        uos_id: product.product_uom_unit
-        invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-      - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-        name: '[PC4] Big PC'
-        price_unit: 1900.0
-        quantity: 3.0
-        product_id: prod_iva21
-        uos_id: product.product_uom_unit
-        invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-
-- Compute amount
-- !python {model: account.invoice}: |
-    inv_id = [ref('inv_ri2rm_2prod')]
-    self.view_init(cr, uid, inv_id, {})
-    self.button_compute(cr, uid, inv_id)
-
-- Validate invoice
-- !workflow {model: account.invoice, action: invoice_open, ref: inv_ri2rm_2prod}
-
-- Check CAE invoice number
-- !assert {model: account.invoice, id: inv_ri2rm_2prod, string: CAE has been assigned}:
-    - afip_cae != ''
-    - afip_cae_due != ''
-

=== removed file 'l10n_ar_wsafip_fex/test/invoice.yml'
--- l10n_ar_wsafip_fex/test/invoice.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/invoice.yml	1970-01-01 00:00:00 +0000
@@ -1,33 +0,0 @@
-#
-#       Create an invoice from Resp Inscr to Resp Inscr.
-#
-- Create a simple invoice type B
-- !record {model: account.invoice, id: inv_ri2rm}:
-    company_id: com_ivari
-    partner_id: par_rm
-    journal_id: !ref {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    period_id:  !ref {model: account.period, search: "[('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    account_id: !ref {model: account.account, search: "[('code','=','113010'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-    invoice_line:
-      - account_id: !ref {model: account.account, search: "[('code','=','411000'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-        name: '[PC3] Medium PC'
-        price_unit: 900.0
-        quantity: 10.0
-        product_id: prod_iva21
-        uos_id: product.product_uom_unit
-        invoice_line_tax_id: !ref {model: account.tax, search: "[('name','=','01003005:V'),('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]"}
-
-- Compute amount
-- !python {model: account.invoice}: |
-    inv_id = [ref('inv_ri2rm')]
-    self.view_init(cr, uid, inv_id, {})
-    self.button_compute(cr, uid, inv_id)
-
-- Validate invoice
-- !workflow {model: account.invoice, action: invoice_open, ref: inv_ri2rm}
-
-- Check CAE invoice number
-- !assert {model: account.invoice, id: inv_ri2rm, string: CAE has been assigned}:
-    - afip_cae != ''
-    - afip_cae_due != ''
-

=== removed file 'l10n_ar_wsafip_fex/test/journal.yml'
--- l10n_ar_wsafip_fex/test/journal.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/journal.yml	1970-01-01 00:00:00 +0000
@@ -1,51 +0,0 @@
-#
-# Preparando Authorización
-#
-- Batch Sequence
-- !record {model: ir.sequence, id: fe_sequence_0}:
-    name: FE Web Service AFIP Sequence
-    code: ws_afip_sequence
-
-- In order to test afip webservices append an FE service instance
-- !record {model: wsafip.connection, id: connection_ar_0}:
-    name: Moldeo Interactive FE
-    partner_id: par_ivari
-    logging_id: l10n_ar_wsafip.wsaa_homo
-    server_id: wsfe_homo
-    certificate: cert_ar_0
-    batch_sequence_id: fe_sequence_0
-
-#
-# Preparando Journal
-#
-- Update journal for Electronic Invoice. Invoice type A.
-- !python {model: account.journal}: |
-    journal_id = self.search(cr, uid, [('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    self.write(cr, uid, journal_id, {'afip_connection_id': ref("connection_ar_0")})
-    journal_id = self.search(cr, uid, [('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    self.write(cr, uid, journal_id, {'afip_connection_id': ref("connection_ar_0")})
-
-- Check status of connection.
-- !python {model: account.journal}: |
-    journal_id = self.search(cr, uid, [('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    data = self.read(cr, uid, journal_id)
-
-- Check status of connection.
-- !assert {model: account.journal, search: "[('code','=','FVA0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Connection must happen}:
-   - afip_state == 'connected' 
-   - afip_items_generated >= 0
-
-- Check status of connection.
-- !python {model: account.journal}: |
-    journal_id = self.search(cr, uid, [('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')])
-    data = self.read(cr, uid, journal_id)
-
-- Check status of connection.
-- !assert {model: account.journal, search: "[('code','=','FVB0001'), ('company_id.name','=','Coop. Trab. Moldeo Interactive Ltda.')]", string: Connection must happen}:
-   - afip_state == 'connected' 
-   - afip_items_generated >= 0
-
-#- Test
-#- !python {model: account.journal }: |
-#    import pdb; pdb.set_trace()
-

=== removed file 'l10n_ar_wsafip_fex/test/partners.yml'
--- l10n_ar_wsafip_fex/test/partners.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/partners.yml	1970-01-01 00:00:00 +0000
@@ -1,247 +0,0 @@
-#
-# Consumidor final mas de 1000 $
-#
-- !record {model: res.partner, id: par_cf_gm }:
-    name: Cristian Sebastian Rocha
-    responsability_id: l10n_ar_invoice.res_CF
-    document_type_id: l10n_ar_invoice.dt_DNI
-    document_number: 25095454
-    street: Av. Rivadavia
-    city: Capital Federal
-    state_id: l10n_ar_states.C
-    country_id: base.ar
-    zip: 1407
-
-#
-# IVA exento
-#
-- Create partner
-- !record {model: res.partner, id: par_ivae }:
-    name: ASOCIACION DOCENTES DE LA UNIVERSIDAD NACIONAL DE BUENOS AIRES
-    responsability_id: l10n_ar_invoice.res_IVAE
-    document_type_id: l10n_ar_invoice.dt_CUIT
-    document_number: 30681521077
-    vat: ar30681521077
-    street: Azcuenaga 770
-    city: Capital Federal
-    state_id: l10n_ar_states.C
-    country_id: base.ar
-    zip: 1029
-
-- Create company
-- !record {model: res.company, id: com_ivae }:
-    name: ASOCIACION DOCENTES DE LA UNIVERSIDAD NACIONAL DE BUENOS AIRES
-    partner_id: par_ivae
-    rml_header1: .
-    rml_header2: Web - Tel -
-    rml_header3: CUIT - 
-    currency_id: base.ARS
-
-#
-# IVA responsable inscripto
-#
-- Create partner
-- !record {model: res.partner, id: par_ivari }:
-    name: Coop. Trab. Moldeo Interactive Ltda.
-    responsability_id: l10n_ar_invoice.res_IVARI 
-    document_type_id: l10n_ar_invoice.dt_CUIT
-    document_number: 30712007288
-    vat: ar30712007288
-    street: Castillo 1336 12A 
-    city: Capital Federal
-    state_id: l10n_ar_states.C
-    country_id: base.ar
-    zip: 1414
-
-- Create company
-- !record {model: res.company, id: com_ivari }:
-    name: Coop. Trab. Moldeo Interactive Ltda.
-    partner_id: par_ivari
-    rml_header1: .
-    rml_header2: Web - Tel -
-    rml_header3: CUIT - 
-    currency_id: base.ARS
-
-- Create account company
-- !record {model: ir.property, id: prop_paec_ivari}:
-    company_id: com_ivari
-    fields_id: account.field_res_partner_property_account_payable
-    name: property_account_expense_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- Create partner company
-- !record {model: ir.property, id: prop_paic_ivari}:
-    company_id: com_ivari
-    fields_id: account.field_res_partner_property_account_receivable
-    name: property_account_income_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-#
-# IVA responsable inscripto
-#
-- Create partner
-- !record {model: res.partner, id: par_ivari2 }:
-    name: Cablevision SA.
-    responsability_id: l10n_ar_invoice.res_IVARI 
-    document_type_id: l10n_ar_invoice.dt_CUIT
-    document_number: 30573652084
-    vat: ar30573652084
-    street: Hornos 690
-    city: Capital Federal
-    state_id: l10n_ar_states.C
-    country_id: base.ar
-    zip: 1414
-
-- Create company
-- !record {model: res.company, id: com_ivari2 }:
-    name: Cablevision SA.
-    partner_id: par_ivari2
-    rml_header1: .
-    rml_header2: Web - Tel -
-    rml_header3: CUIT - 
-    currency_id: base.ARS
-
-- Create account company
-- !record {model: ir.property, id: prop_paec_ivari2}:
-    company_id: com_ivari2
-    fields_id: account.field_res_partner_property_account_payable
-    name: property_account_expense_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- Create partner company
-- !record {model: ir.property, id: prop_paic_ivari2}:
-    company_id: com_ivari2
-    fields_id: account.field_res_partner_property_account_receivable
-    name: property_account_income_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-- Property
-- !record {model: ir.property, id: prop_paec_ivari2}:
-    company_id: com_ivari2
-    fields_id: account.field_res_partner_property_account_payable
-    name: property_account_expense_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- Property
-- !record {model: ir.property, id: prop_paic_ivari2}:
-    company_id: com_ivari2
-    fields_id: account.field_res_partner_property_account_receivable
-    name: property_account_income_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-# IVA responsable no inscripto
-#
-- Create partner
-- !record {model: res.partner, id: par_ivarni }:
-    name: FUNDACION UNIVERSIDAD NACIONAL
-    responsability_id: l10n_ar_invoice.res_IVARNI 
-    document_type_id: l10n_ar_invoice.dt_CUIT
-    document_number: 30642332771
-    vat: ar30642332771
-    street: Roca Julio A. Pte. Av. 733, 5
-    city: Capital Federal
-    state_id: l10n_ar_states.C
-    country_id: base.ar
-    zip: 1067
-
-- Create company
-- !record {model: res.company, id: com_ivarni }:
-    name: FUNDACION UNIVERSIDAD NACIONAL
-    partner_id: par_ivarni
-    rml_header1: .
-    rml_header2: Web - Tel -
-    rml_header3: CUIT - 
-    currency_id: base.ARS
-
-- Set account company properties
-- !record {model: ir.property, id: prop_paec_ivarni}:
-    company_id: com_ivarni
-    fields_id: account.field_res_partner_property_account_payable
-    name: property_account_expense_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- !record {model: ir.property, id: prop_paic_ivarni}:
-    company_id: com_ivarni
-    fields_id: account.field_res_partner_property_account_receivable
-    name: property_account_income_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-# IVA no responsable, no alcanzado
-# 
-- Create partner
-- !record {model: res.partner, id: par_ivanr }:
-    name: CONSORCIO DE PROPIETARIOS EDIFICIO UNIVERSIDAD
-    responsability_id: l10n_ar_invoice.res_IVANR
-    document_type_id: l10n_ar_invoice.dt_CUIT
-    document_number: 33707348629
-    vat: ar33707348629
-    street: Urquiza 494
-    city: Parana
-    state_id: l10n_ar_states.E
-    country_id: base.ar
-    zip: 3100
-
-- Create company
-- !record {model: res.company, id: com_ivanr }:
-    name: CONSORCIO DE PROPIETARIOS EDIFICIO UNIVERSIDAD
-    partner_id: par_ivanr
-    rml_header1: .
-    rml_header2: Web - Tel -
-    rml_header3: CUIT - 
-    currency_id: base.ARS
-
-- Set account company properties
-- !record {model: ir.property, id: prop_paec_ivanr}:
-    company_id: com_ivanr
-    fields_id: account.field_res_partner_property_account_payable
-    name: property_account_expense_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- !record {model: ir.property, id: prop_paic_ivanr}:
-    company_id: com_ivanr
-    fields_id: account.field_res_partner_property_account_receivable
-    name: property_account_income_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-#
-# Responsable monotributo
-#
-- Create partner
-- !record {model: res.partner, id: par_rm }:
-    name: Cristian S. Rocha
-    responsability_id: l10n_ar_invoice.res_RM
-    document_type_id: l10n_ar_invoice.dt_CUIT
-    document_number: 23250954549
-    vat: ar23250954549
-    street: Av. Rivadavia
-    city: Capital Federal
-    state_id: l10n_ar_states.C
-    country_id: base.ar
-    zip: 1407
-
-- Create company
-- !record {model: res.company, id: com_rm }:
-    name: Cristian S. Rocha
-    partner_id: par_rm
-    rml_header1: .
-    rml_header2: Web - Tel -
-    rml_header3: CUIT - 
-    currency_id: base.ARS
-
-- Set account company properties
-- !record {model: ir.property, id: prop_paec_rm}:
-    company_id: com_rm
-    fields_id: account.field_res_partner_property_account_payable
-    name: property_account_expense_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_expense'))"
-
-- !record {model: ir.property, id: prop_paic_rm}:
-    company_id: com_rm
-    fields_id: account.field_res_partner_property_account_receivable
-    name: property_account_income_categ
-    value_reference: !eval "'account.account,'+str(ref('account.a_sale'))"
-
-

=== removed file 'l10n_ar_wsafip_fex/test/products.yml'
--- l10n_ar_wsafip_fex/test/products.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/products.yml	1970-01-01 00:00:00 +0000
@@ -1,46 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-# 
-# Los siguientes productos son necesarios para calcular correctamente los
-# impuestos en las facturas.
-#
-#-----------------------------------------------------------------------------
-- Create product with IVA 0%
-- !record {model: product.product, id: prod_iva0 }:
-    name: Producto IVA 0%
-    taxes_id: !ref {model: account.tax, search: "[('name','=','01003000:V')]"}
-
-- Create product with IVA 10.5%
-- !record {model: product.product, id: prod_iva10 }:
-    name: Producto IVA 10.5%
-    taxes_id: !ref {model: account.tax, search: "[('name','=','01003004:V')]"}
-
-- Create product with IVA 21%
-- !record {model: product.product, id: prod_iva21 }:
-    name: Producto IVA 21%
-    taxes_id: !ref {model: account.tax, search: "[('name','=','01003005:V')]"}
-
-- Create product with IVA 27%
-- !record {model: product.product, id: prod_iva27 }:
-    name: Producto IVA 27%
-    taxes_id: !ref {model: account.tax, search: "[('name','=','01003006:V')]"}
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== removed file 'l10n_ar_wsafip_fex/test/test_key.yml'
--- l10n_ar_wsafip_fex/test/test_key.yml	2013-11-12 18:24:53 +0000
+++ l10n_ar_wsafip_fex/test/test_key.yml	1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
--
- # Clave privada y Certificado asignado por AFIP.
- 
- # En este registro hay que cargar la clave de testing de Homologacion
- # recibido desde la AFIP. Ver última sección de:
- 
- # http://www.afip.gob.ar/ws/WSAA/WSAA.ObtenerCertificado.pdf
- 
- # Nota: Para el caso del entorno de Testing, envíelo por e-mail a webservices@xxxxxxxxxxx 
- #      aclarando a qué WS "de negocio" (por ej.: "wsfe", "wsseg", etc.)
- #      pretende acceder usando este certificado. El certificado le será devuelto por e-mail.
- 
- Private key
--
-  !record {model: crypto.pairkey, id: pkey_ar_0}:
-    name: Clave de Homologacion (Testing)
-    state: confirmed
-    key: |
-        -----BEGIN RSA PRIVATE KEY-----
-        MIICWwIBAAKBgQCrJtlRocuiWqRpjpuWXmcmH+nvRDonQb0OvtdLOp01knuzBDK5
-        OT/F7rxyqibP+/ryD1uRDpP+SVCdfbimJuKiLuRwt8xoGvSrf9VEhvMu/iWLLbSh
-        6aj52kPqX4Bvlu84CZQcvGkrIn8M+tCxGGaWvaPTSrIf2ehRsdgFtnuf3QIDAQAB
-        AoGAXoTg5W0mCW5neAgSsrNF4c8kIUgbmYx7fUY1nc0r/ub7u3xpCtOr/YJ/vg9r
-        ydbN2ppSpkRXxMn2ZFOHAvNcmu9j9wwG8uGxL8KEyFhJMtGVnqpu1eFu0pi3Ac9a
-        4kNO6iaeIgWD5rgo6Hv35YNtTqi10U+D5Mfhg540h3anOp0CQQDXFUYFdUFKOmeo
-        dZee486Vxpr+GRSkaq3zvVUVK8Lf9Xa49lAB3UVN0rgW7hpa736Cm93uqtEc9Y4h
-        727nS5x3AkEAy7YVCBFKVRZ1+mkVbwFxEQyY8eInenFizLfsClzsucvq6JiW3mwY
-        VTlWkxBrcVvj+xYIsCt2sGX7kAVLYSi/SwJAOQGAb43mYiAcvT99kjVa2cOr7NEE
-        8Zb8x+9Uj6nrmqRadSeDiRr2dWv2Ms2k2plDdKaPKeTIS96hb0kgodkefQJARDzF
-        BMPN83ynnm8O5/VCq6Rdo0DPWpuardq6Lap8/avKD4n1l6H78KhZUMACTaGrV5NE
-        68ZTZrlysAal/nDIywJAHyl5r0gQOZu6lgkf/O4hTkNzUUXg2hnDGoTggxggzqlD
-        C0hJio5saIsiAa5EQnFns7vxe312lpnh6/Wpke1cMw==
-        -----END RSA PRIVATE KEY-----
-
--
- Certificate
--
-  !record {model: crypto.certificate, id: cert_ar_0}:
-    name: Certificado de Homologacion (Testing)
-    state: confirmed
-    pairkey_id: pkey_ar_0
-    crt: |
-        -----BEGIN CERTIFICATE-----
-        MIIDuDCCAqCgAwIBAgIICZB6jxDNsZowDQYJKoZIhvcNAQEFBQAwQzElMCMGA1UE
-        AwwcQUZJUCBUZXN0aW5nIENvbXB1dGFkb3JlcyBDQTENMAsGA1UECgwEQUZJUDEL
-        MAkGA1UEBhMCQVIwHhcNMTIwMzAxMTM0MTExWhcNMTQxMTI2MTM0MTExWjBWMQ8w
-        DQYDVQQDDAZtb2xkZW8xGTAXBgNVBAUTEENVSVQgMzA3MTIwMDcyODgxGzAZBgNV
-        BAoMEk1vbGRlbyBJbnRlcmFjdGl2ZTELMAkGA1UEBhMCQVIwgZ8wDQYJKoZIhvcN
-        AQEBBQADgY0AMIGJAoGBAKsm2VGhy6JapGmOm5ZeZyYf6e9EOidBvQ6+10s6nTWS
-        e7MEMrk5P8XuvHKqJs/7+vIPW5EOk/5JUJ19uKYm4qIu5HC3zGga9Kt/1USG8y7+
-        JYsttKHpqPnaQ+pfgG+W7zgJlBy8aSsifwz60LEYZpa9o9NKsh/Z6FGx2AW2e5/d
-        AgMBAAGjggEfMIIBGzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNV
-        HQ4EFgQU2XV8B8HtxbDobe/BNlkJ5kAPt1MwHwYDVR0jBBgwFoAURHTutJwm31bh
-        wQ3rVwuQGTY9lgEwgboGA1UdIASBsjCBrzCBrAYOKwYBBAGBu2MBAgECAQEwgZkw
-        gZYGCCsGAQUFBwICMIGJHoGGAEMAZQByAHQAaQBmAGkAYwBhAGQAbwAgAHAAYQBy
-        AGEAIABjAG8AbQBwAHUAdABhAGQAbwByAGUAcwAgAHMAbwBsAG8AIAB2AGEAbABp
-        AGQAbwAgAGUAbgAgAGUAbgB0AG8AcgBuAG8AcwAgAGQAZQAgAGQAZQBzAGEAcgBy
-        AG8AbABsAG8wDQYJKoZIhvcNAQEFBQADggEBAIDXCIVRQy65rts923TgwD/BX6hq
-        jpTc73CeMxD09vJlB135WWX7EhIVOpkl6c3Ag54YLPQnzfyt9CKhwnHfH8loi0EU
-        aq79T4hQOL+rWFpzY6MzeLhOAFuDLQ9z9LSrJIBxwwkFh2aUAC2Awv6sllI6DTya
-        mBYDom4pcCgRfiH++i+bKrcy+On116aAtG/9STTG7XhgeDZ2ceUsrh9h0anpRHMm
-        rrPvtK9VllyaAd6So1mKhhCobZD1EJ6ZqoGCgiKT3Cja1Q6FrEneeM93Uds0Wbvz
-        SxMgzy/J4dB2ypBayBIFKIG4AuoscCIAXgjagsbq5HyFYuDrj9iLOBhDJuI=
-        -----END CERTIFICATE-----
-

=== modified file 'l10n_ar_wsafip_fex/wsafip_server.py'
--- l10n_ar_wsafip_fex/wsafip_server.py	2013-11-14 18:47:14 +0000
+++ l10n_ar_wsafip_fex/wsafip_server.py	2014-01-09 17:56:50 +0000
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
-# Copyright (C) 2012 OpenERP - Team de Localización Argentina.
-# https://launchpad.net/~openerp-l10n-ar-localization
+# Copyright (c) 2010 Elepe Servicios (http://www.elepeservicios.com.ar)
+# All Rights Reserved
+#
+# Author : Dario Kevin De Giacomo (Elepe Servicios)
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,11 +23,78 @@
 from openerp.osv import fields, osv
 from openerp.tools.translate import _
 from suds.client import Client
+from suds import WebFault
 import logging
 import sys
 from sslhttps import HttpsTransport
 
-# logging.getLogger('suds.transport').setLevel(logging.DEBUG)
+#~ logging.getLogger('suds.transport').setLevel(logging.DEBUG)
+_logger = logging.getLogger(__name__)
+
+def _update_incoterms(pool, cr, uid, model_name, remote_list, can_create=True, domain=[]):
+    #~ import pdb; pdb.set_trace()
+    model_obj = pool.get(model_name) 
+
+    # Build set of AFIP codes
+    rem_afip_code_set = set([ i['afip_export_incoterm_code'] for i in remote_list ])
+
+    # Take exists instances 
+    sto_ids = model_obj.search(cr, uid, domain)
+    sto_list = model_obj.read(cr, uid, sto_ids, ['afip_export_incoterm_code'])
+    sto_afip_code_set = set([ i['afip_export_incoterm_code'] for i in sto_list ])
+
+    # Append new afip_code
+    to_append = rem_afip_code_set - sto_afip_code_set
+    if to_append and can_create:
+        for item in [ i for i in remote_list if i['afip_export_incoterm_code'] in to_append ]:
+            model_obj.create(cr, uid, item)
+    elif to_append and not can_create:
+        _logger.warning('New items of type %s in WS. Wont be created.' % model_name)
+
+    # Update active document types
+    to_update = rem_afip_code_set & sto_afip_code_set
+    update_dict = dict( [ (i['afip_export_incoterm_code'], i['active']) for i in remote_list
+                         if i['afip_export_incoterm_code'] in to_update ])
+    to_active = [ k for k,v in update_dict.items() if v ]
+    if to_active:
+        model_ids = model_obj.search(cr, uid, [('afip_export_incoterm_code','in',to_active),('active','in',['f',False])])
+        model_obj.write(cr, uid, model_ids, {'active':True})
+
+    to_deactive = [ k for k,v in update_dict.items() if not v ]
+    if to_deactive:
+        model_ids = model_obj.search(cr, uid, [('afip_export_incoterm_code','in',to_deactive),('active','in',['t',True])])
+        model_obj.write(cr, uid, model_ids, {'active':False})
+
+    # To disable exists local afip_code but not in remote
+    #~ to_inactive = sto_afip_code_set - rem_afip_code_set 
+    #~ if to_inactive:
+        #~ model_ids = model_obj.search(cr, uid, [('afip_export_incoterm_code','in',list(to_inactive))])
+        #~ model_obj.write(cr, uid, model_ids, {'active':False})
+
+    _logger.info('Updated %s items' % model_name)
+
+    return True
+    
+def _update_currency_rates(pool, cr, uid, model_name, remote_list, can_create=False, domain=[]):
+    model_obj = pool.get(model_name)
+
+    # Set ID and RATE for each currency
+    remote_id_rate = []
+    for id, rate in remote_list.iteritems(): remote_id_rate.append([id, rate])
+    
+    for currency in remote_id_rate:
+        curr_id = model_obj.search(cr,uid,[('currency_id','=',currency[0])])
+        adapted_rate = 1/currency[1]
+        model_obj.write(cr, uid, curr_id, {'rate': adapted_rate})
+    
+    string_busqueda = ["ARS"]
+    cr.execute("SELECT id FROM res_currency WHERE name=%s", string_busqueda)
+    afip_pesos_arg_code = [cr.fetchall()[0][0]]
+    cr.execute("UPDATE res_currency_rate SET rate=1.000000 WHERE currency_id=%s",afip_pesos_arg_code)
+
+    _logger.info('Updated currency rates!')
+
+    return True
 
 class wsafip_server(osv.osv):
     _name = "wsafip.server"
@@ -57,6 +126,11 @@
                 _logger.debug('Query AFIP Web service status')
                 srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
                 response = srvclient.service.FEXDummy()
+                
+            except WebFault as e:
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
@@ -66,47 +140,6 @@
                          response.DbServer)
         return r
 
-    def wsfex_update_languages(self, cr, uid, ids, conn_id, context=None):
-        """
-        Updates the list of available Languages.
-
-        AFIP Description: Recupera el listado de los idiomas y sus codigos utilizables en servicio de autorizacion (FEXGetPARAM_Idiomas)
-        """
-        conn_obj = self.pool.get('wsafip.connection')
-
-        for srv in self.browse(cr, uid, ids, context=context):
-            # Ignore servers without code WSFEX.
-            if srv.code != 'wsfex': continue
-
-            # Take the connection, continue if connected or clockshifted
-            conn = conn_obj.browse(cr, uid, conn_id, context=context) 
-            conn.login() # Login if necessary.
-            if conn.state not in  [ 'connected', 'clockshifted' ]: continue
-
-            # Build request
-            try:
-                _logger.debug('Updating list of Languages from AFIP Web service')
-                srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
-                response = srvclient.service.FEXGetPARAM_Idiomas(Auth=conn.get_auth())
-
-                # Take list of available languages
-                languages_list = [
-                    {'afip_lang_id': res.Idi_Id,
-                     'language_name': res.Idi_Ds }
-                    for res in response.FEXResultGet.ClsFEXResponse_Idi ]
-            except Exception as e:
-                _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
-                raise osv.except_osv(_(u'AFIP Web service error'),
-                                     _(u'System return error %i: %s') % (e[0], e[1]))
-
-            _update(self.pool, cr, uid,
-                    'afip.fex_language',
-                    languages_list,
-                    can_create=True
-                   )
-
-        return
-
     def wsfex_update_incoterms(self, cr, uid, ids, conn_id, context=None):
         """
         Updates the list of available Incoterms.
@@ -132,30 +165,35 @@
 
                 # Take list of available Incoterms
                 incoterms_list = [
-                    {'afip_incoterm_code': res.Inc_Id,
-                     'incoterm_dsc': res.Inc_Ds }
+                    {'afip_export_incoterm_code': res.Inc_Id,
+                     'afip_export_incoterm_desc': res.Inc_Ds }
                     for res in response.FEXResultGet.ClsFEXResponse_Inc ]
+                    
+            except WebFault as e:
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
                                      _(u'System return error %i: %s') % (e[0], e[1]))
 
-            _update(self.pool, cr, uid,
-                    'afip.fex_incoterms',
+            _update_incoterms(self.pool, cr, uid,
+                    'afip.incoterms',
                     incoterms_list,
                     can_create=True
                    )
 
         return
-
-    def wsfex_update_currency(self, cr, uid, ids, conn_id, context=None):
+        
+    def wsfex_update_currency_rates(self, cr, uid, ids, conn_id, context=None):
         """
-        Update currency. This function must be called from connection model.
+        Updates the rates of available Currencies.
 
-        AFIP Description: Recupera el listado de monedas y su codigo utilizables en servicio de autorizacion (FEXGetPARAM_MON) 
+        AFIP Description: Recupera la cotizacion de la moneda consultada y su fecha (FEXGetPARAM_Ctz)
         """
         conn_obj = self.pool.get('wsafip.connection')
-
+        currency_rates = {}
         for srv in self.browse(cr, uid, ids, context=context):
             # Ignore servers without code WSFEX.
             if srv.code != 'wsfex': continue
@@ -165,68 +203,38 @@
             conn.login() # Login if necessary.
             if conn.state not in  [ 'connected', 'clockshifted' ]: continue
 
+            # Build request
             try:
-                _logger.info('Updating currency from AFIP Web service')
+                _logger.debug('Updating rates of Currencies from AFIP Web service')
                 srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
-                response = srvclient.service.FEXGetPARAM_MON(Auth=conn.get_auth())
+                cr.execute("SELECT id, afip_code FROM res_currency WHERE afip_code is not NULL ORDER BY id")
+                list_of_currencies = cr.fetchall()
+                
+                for currency_id, afip_code in list_of_currencies:
+                    response = srvclient.service.FEXGetPARAM_Ctz(Auth=conn.get_auth(), Mon_id=afip_code)
+                    if (response.FEXErr.ErrCode != 0):
+                        # Existe Error!
+                        _logger.error('Invalid currency code/No currency rate available for id: %s, code: %s!', currency_id, afip_code)
+                        continue
 
-                # Take list of currency
-                currency_list = [
-                    { 'afip_code': c.Mon_Id,
-                      'name': c.Mon_Ds }
-                    for c in response.FEXResultGet.ClsFEXResponse_Mon
-                ]
+                    currency_rates[currency_id] = response.FEXResultGet.Mon_ctz
+                    
+            except WebFault as e:
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
                                      _(u'System return error %i: %s') % (e[0], e[1]))
 
-            _update(self.pool, cr, uid,
-                    'res.currency',
-                    currency_list,
+            _update_currency_rates(self.pool, cr, uid,
+                    'res.currency.rate',
+                    currency_rates,
                     can_create=False
                    )
-        return True
-        
-    def wsfex_update_uom(self, cr, uid, ids, conn_id, context=None):
-        """
-        Update UoM. This function must be called from connection model.
-
-        AFIP Description: Recupera el listado de las unidades de medida y su codigo utilizables en servicio de autorizacion (FEXGetPARAM_UMed) 
-        """
-        conn_obj = self.pool.get('wsafip.connection')
-
-        for srv in self.browse(cr, uid, ids, context=context):
-            # Ignore servers without code WSFEX.
-            if srv.code != 'wsfex': continue
-
-            # Take the connection, continue if connected or clockshifted
-            conn = conn_obj.browse(cr, uid, conn_id, context=context) 
-            conn.login() # Login if necessary.
-            if conn.state not in  [ 'connected', 'clockshifted' ]: continue
-
-            try:
-                _logger.info('Updating UoM from AFIP Web service')
-                srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
-                response = srvclient.service.FEXGetPARAM_UMed(Auth=conn.get_auth())
-
-                # Take list of UoM available
-                uom_list = [
-                    { 'afip_code': c.Umed_Id,
-                      'name': c.Umed_Ds }
-                    for c in response.FEXResultGet.ClsFEXResponse_UMed
-                ]
-            except Exception as e:
-                _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
-                raise osv.except_osv(_(u'AFIP Web service error'),
-                                     _(u'System return error %i: %s') % (e[0], e[1]))
-
-            _update(self.pool, cr, uid,
-                    'product.uom',
-                    uom_list,
-                    can_create=True
-                   )
-        return True
+
+        return
 
     def wsfex_get_last_invoice_number(self, cr, uid, ids, conn_id, ptoVta, cbteTipo, context=None):
         """
@@ -235,7 +243,7 @@
         AFIP Description: Recupera el ultimo comprobante autorizado (FEXGetLast_CMP)
         """
         conn_obj = self.pool.get('wsafip.connection')
-
+        #~ import pdb; pdb.set_trace()
         r={}
 
         for srv in self.browse(cr, uid, ids, context=context):
@@ -250,10 +258,18 @@
                 continue
 
             try:
+                #~ import pdb; pdb.set_trace()
                 _logger.info('Take last invoice number from AFIP Web service')
                 srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
-                response = srvclient.service.FEXGetLast_CMP(Auth=conn.get_auth(), PtoVta=ptoVta, CbteTipo=cbteTipo)
+                auth = conn.get_auth()
+                auth['Cbte_Tipo'] = cbteTipo
+                auth['Pto_venta'] = ptoVta
+                response = srvclient.service.FEXGetLast_CMP(auth)
 
+            except WebFault as e:
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
@@ -261,24 +277,22 @@
                                        u'Pueda que esté intente realizar esta operación'
                                        u'desde el servidor de homologación.'
                                        u'Intente desde el servidor de producción.') % (e[0], e[1]))
-
-            if hasattr(response, 'Errors'):
-                for e in response.Errors.Err:
-                    code = e.Code
-                    _logger.error('AFIP Web service error!: (%i) %s' % (e.Code, e.Msg))
+            if (response.FEXErr.ErrCode != 0):
+                # Existe Error!
+                _logger.error('AFIP Web service error!: (%i) %s' % (response.FEXErr.ErrCode, response.FEXErr.ErrMsg))
                 r[srv.id] = False
             else:
-                r[srv.id] = int(response.FEXGetLast_CMPResult.FEXResult_LastCMP.CbteNro)
+                r[srv.id] = int(response.FEXResult_LastCMP.Cbte_nro)
         return r
         
     def wsfex_get_last_id(self, cr, uid, ids, conn_id, context=None):
         """
         Get Last ID number from AFIP.
 
-        AFIP Description: Recupera el ultimo ID y su fecha (FEXGetLast_ID) 
+        AFIP Description: Recupera el ultimo ID (FEXGetLast_ID) 
         """
         conn_obj = self.pool.get('wsafip.connection')
-
+        #~ import pdb; pdb.set_trace()
         for srv in self.browse(cr, uid, ids, context=context):
             # Ignore servers without code WSFEX.
             if srv.code != 'wsfex': continue
@@ -291,10 +305,14 @@
                 continue
 
             try:
-                _logger.info('Take last invoice number from AFIP Web service')
+                _logger.info('Take last ID number from AFIP Web service')
                 srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
                 response = srvclient.service.FEXGetLast_ID(Auth=conn.get_auth())
 
+            except WebFault as e:
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
@@ -302,17 +320,16 @@
                                        u'Pueda que esté intente realizar esta operación'
                                        u'desde el servidor de homologación.'
                                        u'Intente desde el servidor de producción.') % (e[0], e[1]))
-
-            if hasattr(response, 'Errors'):
-                for e in response.Errors.Err:
-                    code = e.Code
-                    _logger.error('AFIP Web service error!: (%i) %s' % (e.Code, e.Msg))
-                r[srv.id] = False
+            
+            if (response.FEXErr.ErrCode != 0):
+                # Existe Error!
+                _logger.error('AFIP Web service error!: (%i) %s' % (response.FEXErr.ErrCode, response.FEXErr.ErrMsg))
+                r = False
             else:
-                r[srv.id] = int(response.FEXGetLast_IDResult.FEXResultGet.Id)
+                r = int(response.FEXResultGet.Id)
         return r
     
-    def wsfex_check_permissions(client, token, sign, cuit, id_permiso, dst_merc):
+    def wsfex_check_permissions(self, cr, uid, ids, conn_id, id_permiso, dst_merc, context=None):
         """
         Check shipment/destination country permissions from AFIP
 
@@ -338,6 +355,10 @@
                 srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
                 response = srvclient.service.FEXCheck_Permiso(Auth=conn.get_auth(), ID_Permiso=id_permiso, Dst_merc=dst_merc)
 
+            except WebFault as e:
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
@@ -352,7 +373,7 @@
                     _logger.error('AFIP Web service error!: (%i) %s' % (e.Code, e.Msg))
                 r[srv.id] = False
             else:
-                r[srv.id] = str(response.FEXCheck_PermisoResult.FEXResultGet.Status)
+                r[srv.id] = str(response.FEXResultGet.Status)
         return r
         
     def wsfex_get_cae(self, cr, uid, ids, conn_id, invoice_request, context=None):
@@ -378,35 +399,42 @@
             try:
                 srvclient = Client(srv.url+'?WSDL', transport=HttpsTransport())
                 first = invoice_request.keys()[0]
+                #~ import pdb; pdb.set_trace()
                 response = srvclient.service.FEXAuthorize(Auth=conn.get_auth(),
                     Cmp = [dict([(k,v) for k,v in req.iteritems()]) for req in invoice_request.itervalues()]
                 )
+                
             except WebFault as e:
-                #~ import pdb; pdb.set_trace()
-                _logger.error('WebFault Error!: %s' % (e))
-                raise osv.except_osv(_(u'WebFault Error!'),
-                                     _(u'Error: %s') % (e))
+                _logger.error('AFIP Web service error!: %s' % (e[0]))
+                raise osv.except_osv(_(u'AFIP Web service error'),
+                                     _(u'System return error: %s') % e[0])
             except Exception as e:
                 _logger.error('AFIP Web service error!: (%i) %s' % (e[0], e[1]))
                 raise osv.except_osv(_(u'AFIP Web service error'),
                                      _(u'System return error %i: %s') % (e[0], e[1]))
 
-            for resp in response.FEXAuthorizeResult.FEXResultAuth:
-                if resp.Resultado == 'R':
-                    # Existe Error!
-                    _logger.error('Rejected invoice: %s' % (resp,))
-                    r[int(resp.Id)]={
-                        'Eventos': [ (o.EventCode, unicode(o.EventMsg)) for o in response.FEXAuthorizeResult.FEXEvents ]
-                                if hasattr(response.FEXAuthorizeResult, 'FEXEvents') else [],
-                        'Errores': [ (e.ErrCode,   unicode(e.ErrMsg))   for e in response.FEXAuthorizeResult.FEXErr ]
-                                if hasattr(response.FEXAuthorizeResult, 'FEXErr')    else [],
-                    }
-                else:
-                    # Todo bien!
-                    r[int(resp.Id)]={
-                        'CAE': resp.Cae,
-                        'CAEFchVto': resp.Fch_venc_Cae,
-                    }
+
+            soapmessage = [dict([(k,v) for k,v in req.iteritems()]) for req in invoice_request.itervalues()]
+            cbte_nro = soapmessage[0].get('Cbte_nro')
+            
+            #~ import pdb; pdb.set_trace()
+            
+            if (response.FEXErr.ErrCode != 0):
+                # Existe Error!
+                _logger.error('Rejected invoice!')
+
+                r[cbte_nro]={
+                    'Eventos': [ (o[0], unicode(o[1])) for o in response.FEXEvents ] if (hasattr(response, 'FEXEvents') and response.FEXEvents.EventCode != 0) else [],
+                    'Errores': [ (e[0], unicode(e[1])) for e in response.FEXErr ]    if (hasattr(response, 'FEXErr')    and response.FEXErr.ErrCode != 0)      else [],
+                }
+            else:
+                # Todo bien!
+                r[cbte_nro]={
+                    'CAE': response.FEXResultAuth.Cae,
+                    'CAEFchVto': response.FEXResultAuth.Fch_venc_Cae,
+                    'Request': soapmessage,
+                    'Response': response,
+                }
         return r
 
 


Follow ups