def icms_bonif_industria(self, codNCM): if codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('19053100', '19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029', '17049020'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="10")) self.cst = "10" self.declare(TributBaseFact(icms_mva=float(140.0))) self.declare(TributBaseFact(icms_st_aliquota=float(29.0)))
def ipi_compras(self, codNCM): if codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(ipi_cst="00")) #49 - Outras Entradas self.declare(TributBaseFact(ipi_aliquota=4.8)) elif codNCM in ('22041010'): self.declare(TributBaseFact(ipi_cst="00")) self.cst = "00" self.declare(TributBaseFact(ipi_aliquota=10))
def icms_bonif_simples(self, codNCM): if codNCM in ('17049020', '19053100', '19059090', '21069029', '08043000', '10063021'): self.declare(TributBaseFact(icms_cst="90")) self.cst = "90" elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="10")) self.cst = "10" self.declare(TributBaseFact(icms_mva=140.0)) self.declare(TributBaseFact(icms_st_aliquota=float(29.0)))
def icms_perdas(self, codNCM): if codNCM in ('19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('17049020', '19053100', '21069029'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) self.declare(TributBaseFact(icms_reducao=41.6667)) self.reducao = 41.6667 elif codNCM in ('17049020', '21069029'): self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60"
def icms_aliquota_venda_distribuidor(self, codNCM): if codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029'): self.declare(TributBaseFact(icms_aliquota=float(8.4))) self.aliquota = float(8.4) elif codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('17049020'): self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18)
def icms_cst_venda_consumidor(self, codNCM): if codNCM in ('17049020', '19053100', '19059090', '21069029'): self.declare(TributBaseFact(icms_cst="00")) self.cst = '00' elif codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" self.declare(TributBaseFact(icms_aliquota=float(0))) self.aliquota = float(0) elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60" self.declare(TributBaseFact(icms_aliquota=float(0))) self.aliquota = float(0)
def run_engine(): output_label.is_showing = False coin.start_animating() product = button_group.product engine = IcmsEngine(product) engine_cofins = CofinsEngine(product) tp_mvto = "" if button_group1.buttons[0].is_pressed: tp_mvto = 'compra' elif button_group1.buttons[1].is_pressed: tp_mvto = 'venda' elif button_group1.buttons[2].is_pressed: tp_mvto = 'bonificacao' elif button_group1.buttons[3].is_pressed: tp_mvto = 'perdas' car_trib = "" if button_group2.buttons[0].is_pressed: car_trib = 'consumidor' elif button_group2.buttons[1].is_pressed: car_trib = 'distribuidor' elif button_group2.buttons[2].is_pressed: car_trib = 'industria' elif button_group2.buttons[3].is_pressed: car_trib = 'simples' engine.reset() engine.declare(TributBaseFact(tp_mvto=tp_mvto)) engine.declare(TributBaseFact(car_trib=car_trib)) engine.declare(TributBaseFact(codNCM=product.ncm_code)) engine.declare(TributBaseFact(codbarras=product.cod_barras)) engine_cofins.reset() engine_cofins.declare(TributBaseFact(tp_mvto=tp_mvto)) engine_cofins.declare(TributBaseFact(car_trib=car_trib)) engine_cofins.declare(TributBaseFact(codNCM=product.ncm_code)) engine_cofins.declare(TributBaseFact(codbarras=product.cod_barras)) engine.run() engine_cofins.run() global facts, cst, aliquota, facts_cofins, aliquota_cofins, cst_cofins, aliquota_pis, nat_pis_cofins, icms_reducao facts = engine.facts facts_cofins = engine_cofins.facts cst = engine.cst aliquota = engine.aliquota icms_reducao = engine.reducao aliquota_cofins = engine_cofins.aliquota_cofins cst_cofins = engine_cofins.cofins_cst aliquota_pis = engine_cofins.aliquota_pis nat_pis_cofins = engine_cofins.cofins_natureza
def cofins_venda_cst_t(self, codNCM): if codNCM in ('19053100', '19059090', '21069029', '17049020'): self.cofins_cst = '01' elif codNCM in ('22030000', '22011000'): self.cofins_cst = '04' elif codNCM in ('08043000', '10063021'): self.cofins_cst = '06' self.declare(TributBaseFact(cofins_cst=self.cofins_cst))
def cofins_tributacao_06(self, codNCM): if codNCM in ('04012010', '04012110', '04014010'): self.cofins_natureza = '110' elif codNCM in ('08043000', '10063021'): self.cofins_natureza = '116' elif codNCM in ('02012010', '02012020', '02012090'): self.cofins_natureza = '121' elif codNCM in ('03038943', '03038955', '03038963', '03038990'): self.cofins_natureza = '122' self.declare(TributBaseFact(cofins_natureza=self.cofins_natureza))
def cofins_compra_cst_t(self, codNCM): if codNCM in ('19053100', '19059090', '21069029', '17049020'): self.cofins_cst = '50' #Operação com direito a crédito elif codNCM in ('22030000', '08119000', '22021000', '22011000'): self.cofins_cst = '70' #Operação de aquisição sem direito a crédito #elif ncm in ('5'): # self.cofins_cst='72' #Operação de aquisição com isenção elif codNCM in ('08043000', '02012010', '02012090', '10063021'): self.cofins_cst = '73' #Operação de aquisição com alíquota zero elif codNCM in ('24022000'): self.cofins_cst = '75' #Operação de aquisição por substituição tributária self.declare(TributBaseFact(cofins_cst=self.cofins_cst))
def cofins_tributacao_04(self, codNCM): if codNCM in ('22071090'): self.cofins_natureza = '112' elif codNCM in ('08119000', '22021000'): self.cofins_natureza = '202' elif codNCM in ('22011000', '22029000'): self.cofins_natureza = '420' elif codNCM in ('22030000'): self.cofins_natureza = '423' elif codNCM in ('22011000'): self.cofins_natureza = '424' self.declare(TributBaseFact(cofins_natureza=self.cofins_natureza))
def icms_pauta(self, codbarras): valor = float(0) if codbarras == "7896045501502": valor = 3.06 elif codbarras == '7896045501489': valor = 2.00 elif codbarras == '7896639663609': valor = 2.65 elif codbarras == '7896052600328': valor = 3.40 elif codbarras == '7891149102013': valor = 2.65 elif codbarras == '7891991008662': valor = 12.80 elif codbarras == '7897395050191': valor = 3.14 elif codbarras == '7891991000796': valor = 2.58 elif codbarras == '7891991000796': valor = 2.62 elif codbarras == '0000078909182': valor = 3.63 elif codbarras == '7896045506095': valor = 1.78 elif codbarras == '7896045506095': valor = 1.77 elif codbarras == '0000078905290': valor = 8.53 elif codbarras == '0000078905351': valor = 6.31 elif codbarras == '7891149030309': valor = 4.09 elif codbarras == '0000078905276': valor = 6.31 elif codbarras == '0000078904644': valor = 5.32 elif codbarras == '7891149200405': valor = 6.94 elif codbarras == '7891149010400': valor = 7.10 self.declare(TributBaseFact(icms_pauta=valor))
from icms_engine import IcmsEngine from tribut_base_fact import TributBaseFact from product import Product from pyknow import * #Carga dos dados informados pelo usuário ncm_code = input("Informe o NCM do produto") tp_mvto = input("Informe o tipo do movimento (venda / compra)") #venda / compra / bonificacao / perdas car_trib = input("Informe o tipo de carga tributária (consumidor / industria / distribuidor / simples)") product = Product('normal', 1) product(ncm_code=ncm_code) product(tp_mvto=tp_mvto) product(car_trib=car_trib) #Execução do sistema engine = IcmsEngine(product) engine.reset() engine.declare(TributBaseFact(ncm_code=ncm_code)) engine.declare(TributBaseFact(tp_mvto=tp_mvto)) engine.declare(TributBaseFact(car_trib=car_trib)) engine.run() print(engine.facts)
def cofins_tributacao_05(self, codNCM): if codNCM in ('24022000'): self.cofins_natureza = '101' self.declare(TributBaseFact(cofins_natureza=self.cofins_natureza))
class CofinsEngine(KnowledgeEngine): cofins_aliq_basica = 0 pis_aliq_basica = 0 def __init__(self, product): KnowledgeEngine.__init__(self) self.product = product self.aliquota_cofins = 0 self.cofins_cst = "" self.cofins_natureza = "" self.aliquota_pis = 0 @DefFacts() def _initial_action(self): yield TributBaseFact(regime_empresa='Lucro Real') @Rule(TributBaseFact(regime_empresa='Lucro Real'), salience=10) def cofins_aliq_basica_lucro_real(self): self.cofins_aliq_basica = 7.6 self.pis_aliq_basica = 1.65 @Rule(NOT(TributBaseFact(regime_empresa='Lucro Real')), salience=10) def cofins_aliq_basica_lucro_presumido(self): self.cofins_aliq_basica = 3 self.pis_aliq_basica = 0.65 @Rule(OR(TributBaseFact(cofins_cst='01'), TributBaseFact(cofins_cst='50')), salience=8) def cofins_tributacao_01_50(self): self.aliquota_cofins = self.cofins_aliq_basica self.aliquota_pis = self.pis_aliq_basica @Rule(TributBaseFact(cofins_cst='04'), TributBaseFact(codNCM=MATCH.codNCM), salience=8) def cofins_tributacao_04(self, codNCM): if codNCM in ('22071090'): self.cofins_natureza = '112' elif codNCM in ('08119000', '22021000'): self.cofins_natureza = '202' elif codNCM in ('22011000', '22029000'): self.cofins_natureza = '420' elif codNCM in ('22030000'): self.cofins_natureza = '423' elif codNCM in ('22011000'): self.cofins_natureza = '424' self.declare(TributBaseFact(cofins_natureza=self.cofins_natureza)) @Rule(TributBaseFact(cofins_cst='05'), TributBaseFact(codNCM=MATCH.codNCM), salience=8) def cofins_tributacao_05(self, codNCM): if codNCM in ('24022000'): self.cofins_natureza = '101' self.declare(TributBaseFact(cofins_natureza=self.cofins_natureza)) @Rule(TributBaseFact(cofins_cst='06'), TributBaseFact(codNCM=MATCH.codNCM), salience=8) def cofins_tributacao_06(self, codNCM): if codNCM in ('04012010', '04012110', '04014010'): self.cofins_natureza = '110' elif codNCM in ('08043000', '10063021'): self.cofins_natureza = '116' elif codNCM in ('02012010', '02012020', '02012090'): self.cofins_natureza = '121' elif codNCM in ('03038943', '03038955', '03038963', '03038990'): self.cofins_natureza = '122' self.declare(TributBaseFact(cofins_natureza=self.cofins_natureza)) # COFINS - Vendas @Rule(TributBaseFact(tp_mvto='venda'), TributBaseFact(codNCM=MATCH.codNCM), salience=9) def cofins_venda_cst_t(self, codNCM): if codNCM in ('19053100', '19059090', '21069029', '17049020'): self.cofins_cst = '01' elif codNCM in ('22030000', '22011000'): self.cofins_cst = '04' elif codNCM in ('08043000', '10063021'): self.cofins_cst = '06' self.declare(TributBaseFact(cofins_cst=self.cofins_cst)) # COFINS - Compras @Rule( TributBaseFact(tp_mvto='compra'), #OR(TributBaseFact(car_trib='distribuidor'), TributBaseFact(car_trib='simples'), TributBaseFact(car_trib='industria')), TributBaseFact(codNCM=MATCH.codNCM), salience=9) def cofins_compra_cst_t(self, codNCM): if codNCM in ('19053100', '19059090', '21069029', '17049020'): self.cofins_cst = '50' #Operação com direito a crédito elif codNCM in ('22030000', '08119000', '22021000', '22011000'): self.cofins_cst = '70' #Operação de aquisição sem direito a crédito #elif ncm in ('5'): # self.cofins_cst='72' #Operação de aquisição com isenção elif codNCM in ('08043000', '02012010', '02012090', '10063021'): self.cofins_cst = '73' #Operação de aquisição com alíquota zero elif codNCM in ('24022000'): self.cofins_cst = '75' #Operação de aquisição por substituição tributária self.declare(TributBaseFact(cofins_cst=self.cofins_cst)) # COFINS - Bonificação @Rule(TributBaseFact(tp_mvto='bonificacao'), salience=9) def cofins_bonificacao_cst(self): self.cofins_cst = '70' self.declare(TributBaseFact(cofins_cst=self.cofins_cst)) # COFINS - Perdas @Rule(TributBaseFact(tp_mvto='perdas'), TributBaseFact(codNCM=MATCH.codNCM), salience=9) def cofins_perdas_cst(self, codNCM): if codNCM in ('19053100', '19059090', '21069029', '17049020'): self.cofins_cst = '01' elif codNCM in ('22030000', '22011000'): self.cofins_cst = '04' elif codNCM in ('08043000', '10063021'): self.cofins_cst = '06' self.declare(TributBaseFact(cofins_cst=self.cofins_cst))
def _initial_action(self): yield TributBaseFact(regime_empresa='Lucro Real')
def cofins_bonificacao_cst(self): self.cofins_cst = '70' self.declare(TributBaseFact(cofins_cst=self.cofins_cst))
def icms_origem(self, origem): if origem in ('1', '2', '3', '6', '7'): self.declare(TributBaseFact(icms_aliquota=float(4))) self.aliquota = float(4)
class IcmsEngine(KnowledgeEngine): def __init__(self, product): KnowledgeEngine.__init__(self) self.product = product self.aliquota = 0.0 self.cst = "" self.reducao = 0.0 @DefFacts() def _initial_action(self): yield TributBaseFact(regime_empresa="Lucro Real") # Definição de Pauta Fiscal - regra final, somente se a tributação for de ICMS-ST @Rule(TributBaseFact(codbarras=MATCH.codbarras), salience=5) def icms_pauta(self, codbarras): valor = float(0) if codbarras == "7896045501502": valor = 3.06 elif codbarras == '7896045501489': valor = 2.00 elif codbarras == '7896639663609': valor = 2.65 elif codbarras == '7896052600328': valor = 3.40 elif codbarras == '7891149102013': valor = 2.65 elif codbarras == '7891991008662': valor = 12.80 elif codbarras == '7897395050191': valor = 3.14 elif codbarras == '7891991000796': valor = 2.58 elif codbarras == '7891991000796': valor = 2.62 elif codbarras == '0000078909182': valor = 3.63 elif codbarras == '7896045506095': valor = 1.78 elif codbarras == '7896045506095': valor = 1.77 elif codbarras == '0000078905290': valor = 8.53 elif codbarras == '0000078905351': valor = 6.31 elif codbarras == '7891149030309': valor = 4.09 elif codbarras == '0000078905276': valor = 6.31 elif codbarras == '0000078904644': valor = 5.32 elif codbarras == '7891149200405': valor = 6.94 elif codbarras == '7891149010400': valor = 7.10 self.declare(TributBaseFact(icms_pauta=valor)) #Caso se trate de 1 - Mercadoria Estrangeira / 2 - Mercadoria Estrangeira Adquirida no Mercado Interno # 3 - Mercadoria nacional com conteúdo de importação superior a 40% # 6 - Mercadoria estrangeira com importação direta constante em lista de resolução CAMEX # 7 - Mercadoria estrangeira adquirida no mercado interno constante em lista de resolução CAMEX @Rule(TributBaseFact(origem=MATCH.origem), TributBaseFact(icms_cst='00'), salience=6) def icms_origem(self, origem): if origem in ('1', '2', '3', '6', '7'): self.declare(TributBaseFact(icms_aliquota=float(4))) self.aliquota = float(4) # ICMS - Vendas # Venda consumidor @Rule(TributBaseFact(tp_mvto='venda'), TributBaseFact(car_trib='consumidor'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_cst_venda_consumidor(self, codNCM): if codNCM in ('17049020', '19053100', '19059090', '21069029'): self.declare(TributBaseFact(icms_cst="00")) self.cst = '00' elif codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" self.declare(TributBaseFact(icms_aliquota=float(0))) self.aliquota = float(0) elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60" self.declare(TributBaseFact(icms_aliquota=float(0))) self.aliquota = float(0) # Venda distribuidor @Rule(TributBaseFact(tp_mvto='venda'), OR(TributBaseFact(car_trib='distribuidor'), TributBaseFact(car_trib='simples'), TributBaseFact(car_trib='industria')), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_cst_venda_distribuidor(self, codNCM): if codNCM in ('17049020', '19053100', '19059090', '21069029'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" elif codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" self.declare(TributBaseFact(icms_aliquota=float(0))) self.aliquota = float(0) elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60" self.declare(TributBaseFact(icms_aliquota=float(0))) self.aliquota = float(0) #Venda CST 00 @Rule(TributBaseFact(tp_mvto='venda'), TributBaseFact(car_trib='consumidor'), TributBaseFact(icms_cst="00"), TributBaseFact(codNCM=MATCH.codNCM), salience=9) def icms_aliquota_venda_consumidor(self, codNCM): if codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029'): self.declare(TributBaseFact(icms_aliquota=float(8.4))) self.aliquota = float(8.4) elif codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('17049020'): self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) @Rule(TributBaseFact(tp_mvto='venda'), OR(TributBaseFact(car_trib='distribuidor'), TributBaseFact(car_trib='simples'), TributBaseFact(car_trib='industria')), TributBaseFact(icms_cst="00"), TributBaseFact(codNCM=MATCH.codNCM), salience=9) def icms_aliquota_venda_distribuidor(self, codNCM): if codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029'): self.declare(TributBaseFact(icms_aliquota=float(8.4))) self.aliquota = float(8.4) elif codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('17049020'): self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) # ICMS - Compras @Rule(TributBaseFact(tp_mvto='compra'), TributBaseFact(car_trib='simples'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_compra_simples(self, codNCM): if codNCM in ('17049020', '19053100', '19059090', '21069029', '08043000', '10063021'): self.declare(TributBaseFact(icms_cst="90")) self.cst = "90" elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="10")) self.cst = "10" self.declare(TributBaseFact(icms_mva=140.0)) self.declare(TributBaseFact(icms_st_aliquota=29.0)) @Rule(TributBaseFact(tp_mvto='compra'), TributBaseFact(car_trib='distribuidor'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_compra_distribuidor(self, codNCM): if codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('19053100', '19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029', '17049020'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60" @Rule(TributBaseFact(tp_mvto='compra'), TributBaseFact(car_trib='industria'), TributBaseFact(codNCM=MATCH.codNCM), salience=float(10)) def icms_compra_industria(self, codNCM): if codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('19053100', '19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029', '17049020'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="10")) self.cst = "10" self.declare(TributBaseFact(icms_mva=140.0)) self.declare(TributBaseFact(icms_st_aliquota=float(29.0))) # ICMS - Bonificação @Rule(TributBaseFact(tp_mvto='bonificacao'), TributBaseFact(car_trib='simples'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_bonif_simples(self, codNCM): if codNCM in ('17049020', '19053100', '19059090', '21069029', '08043000', '10063021'): self.declare(TributBaseFact(icms_cst="90")) self.cst = "90" elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="10")) self.cst = "10" self.declare(TributBaseFact(icms_mva=140.0)) self.declare(TributBaseFact(icms_st_aliquota=float(29.0))) @Rule(TributBaseFact(tp_mvto='bonificacao'), TributBaseFact(car_trib='distribuidor'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_bonif_distribuidor(self, codNCM): if codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('19053100', '19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029', '17049020'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60" @Rule(TributBaseFact(tp_mvto='bonificacao'), TributBaseFact(car_trib='industria'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_bonif_industria(self, codNCM): if codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('19053100', '19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) elif codNCM in ('19059090'): self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('21069029', '17049020'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="10")) self.cst = "10" self.declare(TributBaseFact(icms_mva=float(140.0))) self.declare(TributBaseFact(icms_st_aliquota=float(29.0))) # ICMS - Perdas @Rule(TributBaseFact(tp_mvto='perdas'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def icms_perdas(self, codNCM): if codNCM in ('19059090'): self.declare(TributBaseFact(icms_cst="00")) self.cst = "00" self.declare(TributBaseFact(icms_aliquota=float(7))) self.aliquota = float(7) elif codNCM in ('17049020', '19053100', '21069029'): self.declare(TributBaseFact(icms_cst="20")) self.cst = "20" if codNCM in ('19053100'): self.declare(TributBaseFact(icms_aliquota=float(12))) self.aliquota = float(12) self.declare(TributBaseFact(icms_reducao=41.6667)) self.reducao = 41.6667 elif codNCM in ('17049020', '21069029'): self.declare(TributBaseFact(icms_aliquota=float(18))) self.aliquota = float(18) self.declare(TributBaseFact(icms_reducao=33.33)) self.reducao = 33.33 elif codNCM in ('08043000', '10063021'): self.declare(TributBaseFact(icms_cst="40")) self.cst = "40" elif codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(icms_cst="60")) self.cst = "60" # IPI - Compras @Rule(TributBaseFact(tp_mvto='compra'), TributBaseFact(car_trib='industria'), TributBaseFact(codNCM=MATCH.codNCM), salience=10) def ipi_compras(self, codNCM): if codNCM in ('22030000', '22011000'): self.declare(TributBaseFact(ipi_cst="00")) #49 - Outras Entradas self.declare(TributBaseFact(ipi_aliquota=4.8)) elif codNCM in ('22041010'): self.declare(TributBaseFact(ipi_cst="00")) self.cst = "00" self.declare(TributBaseFact(ipi_aliquota=10))