~mileo/openerp.pt-br-localiz/openerp-pt-br-frete-em-linhas

« back to all changes in this revision

Viewing changes to l10n_br_account/account_invoice.py

  • Committer: Renato Lima
  • Date: 2012-11-05 22:09:19 UTC
  • Revision ID: renatonlima@gmail.com-20121105220919-n8dlgzd9neihfewg
l10n_br_account: refatorada métodos do fields_view_get dos objetos account.invoice e account.invoice.line para funcionar corretamente nas devoluções e nas notas fiscais de serviço, formado código, e incluido a posição fiscal na linha

Show diffs side-by-side

added added

removed removed

Lines of Context:
560
560
    def fields_view_get(self, cr, uid, view_id=None, view_type=False, 
561
561
                        context=None, toolbar=False, submenu=False):
562
562
        
563
 
        result = super(account_invoice_line, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
 
563
        result = super(account_invoice_line, self).fields_view_get(
 
564
            cr, uid, view_id=view_id, view_type=view_type, context=context,
 
565
            toolbar=toolbar, submenu=submenu)
564
566
        
565
567
        if context is None:
566
568
            context = {}
571
573
            
572
574
            if 'type' in context.keys():
573
575
 
574
 
                operation_type = {'out_invoice': 'output', 
575
 
                                  'in_invoice': 'input', 
576
 
                                  'out_refund': 'input', 
 
576
                OPERATION_TYPE = {'out_invoice': 'output',
 
577
                                  'in_invoice': 'input',
 
578
                                  'out_refund': 'input',
577
579
                                  'in_refund': 'output'}
 
580
                
 
581
                JOURNAL_TYPE = {'out_invoice': 'sale',
 
582
                                'in_invoice': 'purchase',
 
583
                                'out_refund': 'sale_refund',
 
584
                                'in_refund': 'purchase_refund'}
 
585
                    
 
586
                fiscal_categories = eview.xpath("//field[@name='fiscal_category_id']")
 
587
                for fiscal_category_id in fiscal_categories:
 
588
                    fiscal_category_id.set('domain',
 
589
                                           "[('type', '=', '%s'), \
 
590
                                           ('journal_type', '=', '%s')]" \
 
591
                                           % (OPERATION_TYPE[context['type']],
 
592
                                              JOURNAL_TYPE[context['type']]))
 
593
                    fiscal_category_id.set('required', '1')
578
594
 
579
595
                cfops = eview.xpath("//field[@name='cfop_id']")
580
596
                for cfop_id in cfops:
581
 
                    cfop_id.set('domain', "[('type','=','%s')]" % (operation_type[context['type']],))
 
597
                    cfop_id.set('domain', "[('type','=','%s')]" % (OPERATION_TYPE[context['type']],))
582
598
                    cfop_id.set('required', '1')
583
 
 
584
 
                fiscal_categories = eview.xpath("//field[@name='fiscal_category_id']")
585
 
                for fiscal_category_id in fiscal_categories:
586
 
                    fiscal_category_id.set('domain', "[('fiscal_type','=','product'),('type','=','%s'),('use_invoice','=',True)]" % (operation_type[context['type']],))
587
 
                    fiscal_category_id.set('required', '1')    
588
599
            
589
600
            if context.get('fiscal_type', False) == 'service':
590
601
                
593
604
                    cfop_id.set('invisible', '1')
594
605
                    cfop_id.set('required', '0')
595
606
        
596
 
                if context['type'] in ('in_invoice', 'out_refund'):    
597
 
                    fiscal_categories = eview.xpath("//field[@name='fiscal_category_id']")
598
 
                    for fiscal_category_id in fiscal_categories:
599
 
                        fiscal_category_id.set('domain', "[('fiscal_type','=','service'),('type','=','input'),('use_invoice','=',True)]")
600
 
                        fiscal_category_id.set('required', '1')
601
 
                
602
 
                if context['type'] in ('out_invoice', 'in_refund'):  
603
 
                    fiscal_categories = eview.xpath("//field[@name='fiscal_category_id']")
604
 
                    for fiscal_category_id in fiscal_categories:
605
 
                        fiscal_category_id.set('domain', "[('fiscal_type','=','service'),('type','=','output'),('use_invoice','=',True)]")
606
 
                        fiscal_category_id.set('required', '1')
607
 
            
608
607
            result['arch'] = etree.tostring(eview)
609
608
        
610
609
        if view_type == 'tree':
808
807
        return res
809
808
 
810
809
    _columns = {
811
 
                'fiscal_category_id': fields.many2one('l10n_br_account.fiscal.category', 'Categoria'),
812
 
                'fiscal_position_id': fields.many2one('account.fiscal.position', 'Fiscal Position', domain="[('fiscal_category_id','=',fiscal_category_id)]"),
813
 
                'cfop_id': fields.many2one('l10n_br_account.cfop', 'CFOP'),
814
 
                'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal', type="float",
815
 
                                                  digits_compute= dp.get_precision('Account'), store=True, multi='all'),
816
 
                'price_total': fields.function(_amount_line, method=True, string='Total', type="float",
817
 
                                               digits_compute= dp.get_precision('Account'), store=True, multi='all'),
818
 
                'icms_base_type': fields.function(_amount_line, method=True, string='Tipo Base ICMS', type="char", size=64,
819
 
                                              store=True, multi='all'),
820
 
                'icms_base': fields.function(_amount_line, method=True, string='Base ICMS', type="float",
821
 
                                             digits_compute= dp.get_precision('Account'), store=True, multi='all'),
822
 
                'icms_base_other': fields.function(_amount_line, method=True, string='Base ICMS Outras', type="float",
823
 
                                             digits_compute= dp.get_precision('Account'), store=True, multi='all'),
824
 
                'icms_value': fields.function(_amount_line, method=True, string='Valor ICMS', type="float",
825
 
                                              digits_compute= dp.get_precision('Account'), store=True, multi='all'),
826
 
                'icms_percent': fields.function(_amount_line, method=True, string='Perc ICMS', type="float",
827
 
                                                digits_compute= dp.get_precision('Account'), store=True, multi='all'),
828
 
                'icms_percent_reduction': fields.function(_amount_line, method=True, string='Perc Redução de Base ICMS', type="float",
829
 
                                                digits_compute= dp.get_precision('Account'), store=True, multi='all'),
830
 
                'icms_st_base_type': fields.function(_amount_line, method=True, string='Tipo Base ICMS ST', type="char", size=64,
831
 
                                              store=True, multi='all'),
832
 
                'icms_st_value': fields.function(_amount_line, method=True, string='Valor ICMS ST', type="float",
833
 
                                              digits_compute= dp.get_precision('Account'), store=True, multi='all'),
834
 
                'icms_st_base': fields.function(_amount_line, method=True, string='Base ICMS ST', type="float",
835
 
                                              digits_compute= dp.get_precision('Account'), store=True, multi='all'),
836
 
                'icms_st_percent': fields.function(_amount_line, method=True, string='Percentual ICMS ST', type="float",
837
 
                                              digits_compute= dp.get_precision('Account'), store=True, multi='all'),
838
 
                'icms_st_percent_reduction': fields.function(_amount_line, method=True, string='Perc Redução de Base ICMS ST', type="float",
839
 
                                                digits_compute= dp.get_precision('Account'), store=True, multi='all'),
840
 
                'icms_st_mva': fields.function(_amount_line, method=True, string='MVA ICMS ST', type="float",
841
 
                                              digits_compute= dp.get_precision('Account'), store=True, multi='all'),
842
 
                'icms_st_base_other': fields.function(_amount_line, method=True, string='Base ICMS ST Outras', type="float",
843
 
                                              digits_compute= dp.get_precision('Account'), store=True, multi='all'),
844
 
                'icms_cst': fields.function(_amount_line, method=True, string='CST ICMS', type="char", size=3,
845
 
                                              store=True, multi='all'),
846
 
                'ipi_type': fields.function(_amount_line, method=True, string='Tipo do IPI', type="char", size=64,
847
 
                                              store=True, multi='all'),
848
 
                'ipi_base': fields.function(_amount_line, method=True, string='Base IPI', type="float",
849
 
                                            digits_compute= dp.get_precision('Account'), store=True, multi='all'),
850
 
                'ipi_base_other': fields.function(_amount_line, method=True, string='Base IPI Outras', type="float",
851
 
                                            digits_compute= dp.get_precision('Account'), store=True, multi='all'),
852
 
                'ipi_value': fields.function(_amount_line, method=True, string='Valor IPI', type="float",
853
 
                                                  digits_compute= dp.get_precision('Account'), store=True, multi='all'),
854
 
                'ipi_percent': fields.function(_amount_line, method=True, string='Perc IPI', type="float",
855
 
                                               digits_compute= dp.get_precision('Account'), store=True, multi='all'),
856
 
                'ipi_cst': fields.function(_amount_line, method=True, string='CST IPI', type="char", size=2,
857
 
                                           store=True, multi='all'),
858
 
                'pis_type': fields.function(_amount_line,
859
 
                                            method=True,
860
 
                                            string='Tipo do PIS',
861
 
                                            type="char",
862
 
                                            size=64,
863
 
                                            store=True,
864
 
                                            multi='all'),
865
 
                'pis_base': fields.function(_amount_line,
866
 
                                            method=True,
867
 
                                            string='Base PIS',
868
 
                                            type="float",
869
 
                                            digits_compute=dp.get_precision('Account'),
870
 
                                            store=True,
871
 
                                            multi='all'),
872
 
                'pis_base_other': fields.function(_amount_line,
873
 
                                                  method=True,
874
 
                                                  string='Base PIS Outras',
875
 
                                                  type="float",
876
 
                                                  digits_compute=dp.get_precision('Account'),
877
 
                                                  store=True,
878
 
                                                  multi='all'),
879
 
                'pis_value': fields.function(_amount_line,
880
 
                                             method=True,
881
 
                                             string='Valor PIS',
882
 
                                             type="float",
883
 
                                             digits_compute=dp.get_precision('Account'),
884
 
                                             store=True,
885
 
                                             multi='all'),
886
 
                'pis_percent': fields.function(_amount_line,
887
 
                                               method=True,
888
 
                                               string='Perc PIS',
889
 
                                               type="float",
890
 
                                               digits_compute=dp.get_precision('Account'),
891
 
                                               store=True,
892
 
                                               multi='all'),
893
 
                'pis_cst': fields.function(_amount_line,
894
 
                                           method=True,
895
 
                                           string='CST PIS',
896
 
                                           type="char",
897
 
                                           size=2,
898
 
                                           store=True,
899
 
                                           multi='all'),
900
 
                'pis_st_type': fields.function(_amount_line,
901
 
                                               method=True,
902
 
                                               string='Calculo PIS ST',
903
 
                                               type="char",
904
 
                                               size=64,
905
 
                                               store=True,
906
 
                                               multi='all'),
907
 
                'pis_st_base': fields.function(_amount_line,
908
 
                                               method=True,
909
 
                                               string='Base PIS ST',
910
 
                                               type="float",
911
 
                                               digits_compute=dp.get_precision('Account'),
912
 
                                               store=True,
913
 
                                               multi='all'),
914
 
                'pis_st_percent': fields.function(_amount_line,
915
 
                                                  method=True,
916
 
                                                  string='Perc PIS ST',
917
 
                                                  type="float",
918
 
                                                  digits_compute=dp.get_precision('Account'),
919
 
                                                  store=True,
920
 
                                                  multi='all'),
921
 
                'pis_st_value': fields.function(_amount_line,
922
 
                                                method=True,
923
 
                                                string='Valor PIS ST',
924
 
                                                type="float",
925
 
                                                digits_compute=dp.get_precision('Account'),
926
 
                                                store=True,
927
 
                                                multi='all'),
928
 
                'cofins_type': fields.function(_amount_line, 
929
 
                                               method=True, 
930
 
                                               string='Tipo do COFINS', 
931
 
                                               type="char", 
932
 
                                               size=64,
933
 
                                               store=True, 
934
 
                                               multi='all'),
935
 
                'cofins_base': fields.function(_amount_line,
936
 
                                               method=True,
937
 
                                               string='Base COFINS',
938
 
                                               type="float",
939
 
                                               digits_compute=dp.get_precision('Account'),
940
 
                                               store=True, multi='all'),
941
 
                'cofins_base_other': fields.function(_amount_line,
942
 
                                                     method=True,
943
 
                                                     string='Base COFINS Outras',
944
 
                                                     type="float",
945
 
                                                     digits_compute=dp.get_precision('Account'),
946
 
                                                     store=True,
947
 
                                                     multi='all'),
948
 
                'cofins_value': fields.function(_amount_line,
949
 
                                                method=True,
950
 
                                                string='Valor COFINS',
951
 
                                                type="float",
952
 
                                                digits_compute=dp.get_precision('Account'),
953
 
                                                store=True,
954
 
                                                multi='all'),
955
 
                'cofins_percent': fields.function(_amount_line,
956
 
                                                  method=True,
957
 
                                                  string='Perc COFINS',
958
 
                                                  type="float",
959
 
                                                  digits_compute=dp.get_precision('Account'),
960
 
                                                  store=True, multi='all'),
961
 
                'cofins_cst': fields.function(_amount_line,
962
 
                                              method=True,
963
 
                                              string='Valor COFINS',
964
 
                                              type="char",
965
 
                                              size=2,
966
 
                                              store=True,
967
 
                                              multi='all'),
968
 
                'cofins_st_type': fields.function(_amount_line,
969
 
                                                  method=True,
970
 
                                                  string='Calculo COFINS ST',
971
 
                                                  type="char",
972
 
                                                  size=64,
973
 
                                                  store=True,
974
 
                                                  multi='all'),
975
 
                'cofins_st_base': fields.function(_amount_line,
976
 
                                                  method=True,
977
 
                                                  string='Base COFINS ST',
978
 
                                                  type="float",
979
 
                                                  digits_compute=dp.get_precision('Account'),
980
 
                                                  store=True,
981
 
                                                  multi='all'),
982
 
                'cofins_st_percent': fields.function(_amount_line,
983
 
                                                  method=True,
984
 
                                                  string='Perc COFINS ST',
985
 
                                                  type="float",
986
 
                                                  digits_compute=dp.get_precision('Account'),
987
 
                                                  store=True,
988
 
                                                  multi='all'),
989
 
                'cofins_st_value': fields.function(_amount_line,
990
 
                                                  method=True,
991
 
                                                  string='Valor COFINS ST',
992
 
                                                  type="float",
993
 
                                                  digits_compute=dp.get_precision('Account'),
994
 
                                                  store=True,
995
 
                                                  multi='all'),
996
 
                'ii_base': fields.function(_amount_line,
997
 
                                                  method=True,
998
 
                                                  string='Base II',
999
 
                                                  type="float",
1000
 
                                                  digits_compute=dp.get_precision('Account'),
1001
 
                                                  store=True,
1002
 
                                                  multi='all'),
1003
 
                'ii_value': fields.function(_amount_line,
1004
 
                                                  method=True,
1005
 
                                                  string='Valor II',
1006
 
                                                  type="float",
1007
 
                                                  digits_compute=dp.get_precision('Account'),
1008
 
                                                  store=True,
1009
 
                                                  multi='all'),
1010
 
                'ii_iof': fields.float('Valor IOF', required=True,
1011
 
                                       digits_compute= dp.get_precision('Account')),
1012
 
                'ii_customhouse_charges': fields.float('Depesas Atuaneiras', 
1013
 
                                                       required=True,
1014
 
                                                       digits_compute=dp.get_precision('Account')),
1015
 
                }
 
810
        'fiscal_category_id': fields.many2one(
 
811
            'l10n_br_account.fiscal.category', 'Categoria'),
 
812
        'fiscal_position_id': fields.many2one(
 
813
            'account.fiscal.position', u'Posição Fiscal',
 
814
            domain="[('fiscal_category_id','=',fiscal_category_id)]"),
 
815
        'cfop_id': fields.many2one('l10n_br_account.cfop', 'CFOP'),
 
816
        'price_subtotal': fields.function(
 
817
            _amount_line, method=True, string='Subtotal', type="float",
 
818
            digits_compute= dp.get_precision('Account'),
 
819
            store=True, multi='all'),
 
820
        'price_total': fields.function(
 
821
            _amount_line, method=True, string='Total', type="float",
 
822
            digits_compute= dp.get_precision('Account'),
 
823
            store=True, multi='all'),
 
824
        'icms_base_type': fields.function(
 
825
            _amount_line, method=True, string='Tipo Base ICMS', type="char",
 
826
            size=64, store=True, multi='all'),
 
827
        'icms_base': fields.function(
 
828
            _amount_line, method=True, string='Base ICMS', type="float",
 
829
            digits_compute= dp.get_precision('Account'),
 
830
            store=True, multi='all'),
 
831
        'icms_base_other': fields.function(
 
832
            _amount_line, method=True, string='Base ICMS Outras', type="float",
 
833
            digits_compute= dp.get_precision('Account'),
 
834
            store=True, multi='all'),
 
835
        'icms_value': fields.function(
 
836
            _amount_line, method=True, string='Valor ICMS', type="float",
 
837
            digits_compute= dp.get_precision('Account'),
 
838
            store=True, multi='all'),
 
839
        'icms_percent': fields.function(
 
840
            _amount_line, method=True, string='Perc ICMS', type="float",
 
841
            digits_compute= dp.get_precision('Account'),
 
842
            store=True, multi='all'),
 
843
        'icms_percent_reduction': fields.function(
 
844
            _amount_line, method=True, string='Perc Redução de Base ICMS',
 
845
            type="float", digits_compute= dp.get_precision('Account'),
 
846
            store=True, multi='all'),
 
847
        'icms_st_base_type': fields.function(
 
848
            _amount_line, method=True, string='Tipo Base ICMS ST', type="char",
 
849
            size=64, store=True, multi='all'),
 
850
        'icms_st_value': fields.function(
 
851
            _amount_line, method=True, string='Valor ICMS ST', type="float",
 
852
            digits_compute= dp.get_precision('Account'),
 
853
            store=True, multi='all'),
 
854
        'icms_st_base': fields.function(
 
855
            _amount_line, method=True, string='Base ICMS ST', type="float",
 
856
            digits_compute= dp.get_precision('Account'),
 
857
            store=True, multi='all'),
 
858
        'icms_st_percent': fields.function(
 
859
            _amount_line, method=True, string='Percentual ICMS ST',
 
860
            type="float", digits_compute= dp.get_precision('Account'),
 
861
            store=True, multi='all'),
 
862
        'icms_st_percent_reduction': fields.function(
 
863
            _amount_line, method=True, string='Perc Redução de Base ICMS ST',
 
864
            type="float", digits_compute= dp.get_precision('Account'),
 
865
            store=True, multi='all'),
 
866
        'icms_st_mva': fields.function(
 
867
            _amount_line, method=True, string='MVA ICMS ST', type="float",
 
868
            digits_compute= dp.get_precision('Account'),
 
869
            store=True, multi='all'),
 
870
        'icms_st_base_other': fields.function(
 
871
            _amount_line, method=True, string='Base ICMS ST Outras',
 
872
            type="float", digits_compute= dp.get_precision('Account'),
 
873
            store=True, multi='all'),
 
874
        'icms_cst': fields.function(
 
875
            _amount_line, method=True, string='CST ICMS', type="char", size=3,
 
876
            store=True, multi='all'),
 
877
        'ipi_type': fields.function(
 
878
            _amount_line, method=True, string='Tipo do IPI', type="char",
 
879
            size=64, store=True, multi='all'),
 
880
        'ipi_base': fields.function(
 
881
            _amount_line, method=True, string='Base IPI', type="float",
 
882
            digits_compute= dp.get_precision('Account'),
 
883
            store=True, multi='all'),
 
884
        'ipi_base_other': fields.function(
 
885
            _amount_line, method=True, string='Base IPI Outras', type="float",
 
886
            digits_compute= dp.get_precision('Account'),
 
887
            store=True, multi='all'),
 
888
        'ipi_value': fields.function(
 
889
            _amount_line, method=True, string='Valor IPI', type="float",
 
890
            digits_compute= dp.get_precision('Account'),
 
891
            store=True, multi='all'),
 
892
        'ipi_percent': fields.function(
 
893
            _amount_line, method=True, string='Perc IPI', type="float",
 
894
            digits_compute= dp.get_precision('Account'),
 
895
            store=True, multi='all'),
 
896
        'ipi_cst': fields.function(
 
897
            _amount_line, method=True, string='CST IPI', type="char", size=2,
 
898
            store=True, multi='all'),
 
899
        'pis_type': fields.function(
 
900
            _amount_line, method=True, string='Tipo do PIS',
 
901
            type="char", size=64, store=True, multi='all'),
 
902
        'pis_base': fields.function(
 
903
            _amount_line, method=True, string='Base PIS', type="float",
 
904
            digits_compute=dp.get_precision('Account'), store=True,
 
905
            multi='all'),
 
906
        'pis_base_other': fields.function(
 
907
            _amount_line, method=True, string='Base PIS Outras',
 
908
            type="float", digits_compute=dp.get_precision('Account'),
 
909
            store=True, multi='all'),
 
910
        'pis_value': fields.function(
 
911
            _amount_line, method=True, string='Valor PIS', type="float",
 
912
            digits_compute=dp.get_precision('Account'), store=True,
 
913
            multi='all'),
 
914
        'pis_percent': fields.function(
 
915
            _amount_line, method=True, string='Perc PIS', type="float",
 
916
            digits_compute=dp.get_precision('Account'), store=True,
 
917
            multi='all'),
 
918
        'pis_cst': fields.function(
 
919
            _amount_line, method=True, string='CST PIS', type="char",
 
920
            size=2, store=True, multi='all'),
 
921
        'pis_st_type': fields.function(
 
922
            _amount_line, method=True, string='Calculo PIS ST',
 
923
            type="char", size=64, store=True, multi='all'),
 
924
        'pis_st_base': fields.function(
 
925
            _amount_line, method=True, string='Base PIS ST',
 
926
            type="float", digits_compute=dp.get_precision('Account'),
 
927
            store=True, multi='all'),
 
928
        'pis_st_percent': fields.function(
 
929
            _amount_line, method=True, string='Perc PIS ST',
 
930
            type="float", digits_compute=dp.get_precision('Account'),
 
931
            store=True, multi='all'),
 
932
        'pis_st_value': fields.function(
 
933
            _amount_line, method=True, string='Valor PIS ST',
 
934
            type="float", digits_compute=dp.get_precision('Account'),
 
935
            store=True, multi='all'),
 
936
        'cofins_type': fields.function(
 
937
            _amount_line, method=True, string='Tipo do COFINS',
 
938
            type="char", size=64, store=True, multi='all'),
 
939
        'cofins_base': fields.function(
 
940
            _amount_line, method=True, string='Base COFINS',
 
941
            type="float", digits_compute=dp.get_precision('Account'),
 
942
            store=True, multi='all'),
 
943
        'cofins_base_other': fields.function(
 
944
            _amount_line, method=True, string='Base COFINS Outras',
 
945
            type="float", digits_compute=dp.get_precision('Account'),
 
946
            store=True, multi='all'),
 
947
        'cofins_value': fields.function(
 
948
            _amount_line, method=True, string='Valor COFINS',
 
949
            type="float", digits_compute=dp.get_precision('Account'),
 
950
            store=True, multi='all'),
 
951
        'cofins_percent': fields.function(
 
952
            _amount_line, method=True, string='Perc COFINS',
 
953
            type="float", digits_compute=dp.get_precision('Account'),
 
954
            store=True, multi='all'),
 
955
        'cofins_cst': fields.function(
 
956
            _amount_line, method=True, string='Valor COFINS',
 
957
            type="char", size=2, store=True, multi='all'),
 
958
        'cofins_st_type': fields.function(
 
959
            _amount_line, method=True, string='Calculo COFINS ST',
 
960
            type="char", size=64, store=True, multi='all'),
 
961
        'cofins_st_base': fields.function(
 
962
            _amount_line, method=True, string='Base COFINS ST',
 
963
            type="float", digits_compute=dp.get_precision('Account'),
 
964
            store=True, multi='all'),
 
965
        'cofins_st_percent': fields.function(
 
966
            _amount_line, method=True, string='Perc COFINS ST',
 
967
            type="float", digits_compute=dp.get_precision('Account'),
 
968
            store=True,  multi='all'),
 
969
        'cofins_st_value': fields.function(
 
970
            _amount_line, method=True, string='Valor COFINS ST',
 
971
            type="float", digits_compute=dp.get_precision('Account'),
 
972
            store=True, multi='all'),
 
973
        'ii_base': fields.function(
 
974
            _amount_line, method=True, string='Base II',
 
975
            type="float", digits_compute=dp.get_precision('Account'),
 
976
            store=True, multi='all'),
 
977
        'ii_value': fields.function(
 
978
            _amount_line, method=True, string='Valor II',
 
979
            type="float", digits_compute=dp.get_precision('Account'),
 
980
            store=True, multi='all'),
 
981
        'ii_iof': fields.float(
 
982
            'Valor IOF', required=True,
 
983
            digits_compute= dp.get_precision('Account')),
 
984
        'ii_customhouse_charges': fields.float(
 
985
            'Depesas Atuaneiras', required=True,
 
986
            digits_compute=dp.get_precision('Account'))}
 
987
    
1016
988
    _defaults = {
1017
 
                 'ii_iof': 0.0,
1018
 
                 'ii_customhouse_charges': 0.0,
1019
 
                 }
 
989
         'ii_iof': 0.0,
 
990
         'ii_customhouse_charges': 0.0}
1020
991
 
1021
992
    def _fiscal_position_map(self, cr, uid, ids, partner_id, partner_invoice_id, company_id, fiscal_category_id):
1022
993
        result = {'cfop_id': False}
1028
999
            result['cfop_id'] = obj_fp.cfop_id.id
1029
1000
        return result
1030
1001
 
1031
 
    def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', 
1032
 
                          type='out_invoice', partner_id=False, fposition_id=False, 
 
1002
    def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='',
 
1003
                          type='out_invoice', partner_id=False, fposition_id=False,
1033
1004
                          price_unit=False, address_invoice_id=False, currency_id=False, 
1034
 
                          context=None, company_id=False, fiscal_category_id=False):
1035
 
        result = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, 
1036
 
                                                                     type, partner_id, fposition_id, price_unit, 
1037
 
                                                                     address_invoice_id, currency_id, context, company_id)
1038
 
        if not fiscal_category_id or not product:
 
1005
                          context=None, company_id=False, fiscal_category_id=False, parent_fposition_id=False):
 
1006
        result = super(account_invoice_line, self).product_id_change(
 
1007
            cr, uid, ids, product, uom, qty, name, type, partner_id,
 
1008
            fposition_id, price_unit, address_invoice_id, currency_id,
 
1009
            context, company_id)
 
1010
        
 
1011
        if not fiscal_category_id or not product or not parent_fposition_id:
1039
1012
            return result
1040
1013
 
1041
 
        obj_fiscal_position_rule = self.pool.get('account.fiscal.position.rule')
1042
 
        product_fiscal_category_id = obj_fiscal_position_rule.product_fiscal_category_map(cr, uid, product, fiscal_category_id)
 
1014
        obj_fp_rule = self.pool.get('account.fiscal.position.rule')
 
1015
        product_fiscal_category_id = obj_fp_rule.product_fiscal_category_map(
 
1016
            cr, uid, product, fiscal_category_id)
 
1017
 
 
1018
        fiscal_position = fposition_id or parent_fposition_id or False
1043
1019
 
1044
1020
        if not product_fiscal_category_id:
1045
1021
            result['value']['fiscal_category_id'] = fiscal_category_id
1046
 
            if fposition_id:
1047
 
                result['value']['fiscal_position_id'] = fposition_id
1048
 
                result['value']['cfop_id'] = self.pool.get('account.fiscal.position').read(cr, uid, [fposition_id], ['cfop_id'])[0]['cfop_id']
1049
 
            return result
1050
 
 
1051
 
        result['value']['fiscal_category_id'] = product_fiscal_category_id
1052
 
 
1053
 
        fiscal_data = self._fiscal_position_map(cr, uid, ids, partner_id, address_invoice_id, company_id, product_fiscal_category_id)
1054
 
        result['value'].update(fiscal_data)
 
1022
            result['value']['fiscal_position_id'] = fiscal_position
 
1023
            if fiscal_position:
 
1024
                result['value']['cfop_id'] = self.pool.get('account.fiscal.position').read(cr, uid, [fiscal_position], ['cfop_id'])[0]['cfop_id']
 
1025
        else:
 
1026
            result['value']['fiscal_category_id'] = product_fiscal_category_id
 
1027
            fiscal_data = self._fiscal_position_map(cr, uid, ids, partner_id, address_invoice_id, company_id, product_fiscal_category_id)
 
1028
            result['value'].update(fiscal_data)
 
1029
 
1055
1030
        return result
1056
1031
 
1057
1032
account_invoice_line()