Пример #1
0
 def _getCnpjOrCpf(self):
     cnpj = returnDataInDictOrArray(self._dataTagDest, ['CNPJ'])
     cpf = returnDataInDictOrArray(self._dataTagDest, ['CPF'])
     self._idEstrangeiro = returnDataInDictOrArray(self._dataTagDest,
                                                   ['idEstrangeiro'], '')
     if self._idEstrangeiro == '' or self._idEstrangeiro is None:
         self._inscricaoFederal = cnpj if cnpj != '' else cpf
         self._tipoInscricaoFederal = 'CNPJ' if cnpj != '' else 'CPF'
     else:
         self._inscricaoFederal = ''
         self._tipoInscricaoFederal = ''
Пример #2
0
    def getData(self) -> dict:
        self._getCnpjOrCpf()

        self._objEmitente['inscricao_federal'] = self._inscricaoFederal
        self._objEmitente['tipo_inscricao_federal'] = self._tipoInscricaoFederal
        self._objEmitente['razao_social'] = treatsFieldAsText(returnDataInDictOrArray(self._dataTagEmit, ['xNome']))
        self._objEmitente['nome_fantasia'] = treatsFieldAsText(returnDataInDictOrArray(self._dataTagEmit, ['xFant']))
        self._objEmitente['inscricao_estadual'] = returnDataInDictOrArray(self._dataTagEmit, ['IE'])
        self._objEmitente['regime_empresa'] = treatsFieldAsNumber(returnDataInDictOrArray(self._dataTagEmit, ['CRT']), True)
        self._objEmitente['endereco'] = self._getAddress()

        return self._objEmitente
Пример #3
0
 def process(self) -> Union[Dict[str, str], None]:
     ncm = self._dataNcm['ncm']
     nameNcm = treatsFieldAsText(
         returnDataInDictOrArray(self._dataNcm, ['exportacao', ncm]))
     if nameNcm != "":
         return {"ncm": ncm, "nameNcm": nameNcm}
     else:
         nameNcm = treatsFieldAsText(
             returnDataInDictOrArray(self._dataNcm, ['importacao', ncm]))
         if nameNcm != "":
             return {"ncm": ncm, "nameNcm": nameNcm}
         return None
Пример #4
0
    def bebidaFria(self):
        tagsNecessaries = ['bebidas_frias']

        ncm = self._dataNcm['ncm']
        nameNcm = treatsFieldAsText(returnDataInDictOrArray(self._dataNcm, ['bebidas_frias', ncm]))
        dataTagsNecessaries = returnDataInDictOrArray(self._dataNcm, tagsNecessaries, None)
        if dataTagsNecessaries is not None:
            if self._returnOnlyValueNcm is False:
                return {
                    "ncm": ncm,
                    "nameNcm": nameNcm,
                    "tag": 'BebidaFria',
                    "dataTag": ""
                }
            else:
                return ncm
Пример #5
0
    def cstSNVendaVarejista(self):
        tagsNecessaries = ['bebidas_frias', 'codigo_da_situacao_tributaria_cst', 'simples_nacional',
                           'saida_(venda_pelo_comercio_varejista)']

        ncm = self._dataNcm['ncm']
        nameNcm = treatsFieldAsText(returnDataInDictOrArray(self._dataNcm, ['bebidas_frias', ncm]))
        dataTagsNecessaries = returnDataInDictOrArray(self._dataNcm, tagsNecessaries, None)
        if dataTagsNecessaries is not None:
            if self._returnOnlyValueNcm is False:
                return {
                    "ncm": ncm,
                    "nameNcm": nameNcm,
                    "tag": 'BebidaFria_CST_SN_SaidaVendaComercioVarejista',
                    "dataTag": dataTagsNecessaries
                }
            else:
                return ncm
Пример #6
0
    def getData(self):
        self._objIde['numero_nf'] = treatsFieldAsNumber(returnDataInDictOrArray(self._dataTagIde, ['nNF']))
        self._objIde['modelo_nf'] = treatsFieldAsNumber(returnDataInDictOrArray(self._dataTagIde, ['mod']))
        self._objIde['serie_nf'] = returnDataInDictOrArray(self._dataTagIde, ['serie'])
        self._objIde['data_emissao'] = returnDataInDictOrArray(self._dataTagIde, ['dhEmi'])
        self._objIde['data_saida_entrada'] = returnDataInDictOrArray(self._dataTagIde, ['dhSaiEnt'])
        self._objIde['tipo_documento'] = treatsFieldAsNumber(returnDataInDictOrArray(self._dataTagIde, 'tpNF'))
        self._objIde['identificador_local_destino_operacao'] = treatsFieldAsNumber(
            returnDataInDictOrArray(self._dataTagIde, ['idDest']))
        self._objIde['municipio_ocorrencia_fato'] = treatsFieldAsNumber(
            returnDataInDictOrArray(self._dataTagIde, ['cMunFG']))
        self._objIde['finalidade_nf'] = treatsFieldAsNumber(returnDataInDictOrArray(self._dataTagIde, ['finNFe']))

        return self._objIde
Пример #7
0
    def getData(self) -> dict:
        self._getCnpjOrCpf()

        self._objDestinatario['inscricao_federal'] = self._inscricaoFederal
        self._objDestinatario[
            'tipo_inscricao_federal'] = self._tipoInscricaoFederal
        self._objDestinatario['id_estrangeiro'] = self._idEstrangeiro
        self._objDestinatario['razao_social'] = treatsFieldAsText(
            returnDataInDictOrArray(self._dataTagDest, ['xNome']))
        self._objDestinatario[
            'indicador_inscricao_estadual'] = treatsFieldAsNumber(
                returnDataInDictOrArray(self._dataTagDest, ['indIEDest']),
                True)
        self._objDestinatario['inscricao_estadual'] = returnDataInDictOrArray(
            self._dataTagDest, ['IE'])
        self._objDestinatario['inscricao_municipal'] = returnDataInDictOrArray(
            self._dataTagDest, ['IM'])
        self._objDestinatario['endereco'] = self._getAddress()

        return self._objDestinatario
Пример #8
0
    def _tagDet(self):
        listTagsDet = []

        dataTagDet = returnDataInDictOrArray(
            self._dataXml, ['nfeProc', 'NFe', 'infNFe', 'det'])
        if type(dataTagDet) == list:
            listTagsDet = dataTagDet
        else:
            listTagsDet.append(dataTagDet)

        tagDet = TagDet(listTagsDet)
        self._objNf['dados_produtos'] = tagDet.getData()
Пример #9
0
    def process(self) -> Union[dict, None]:
        isNfe = self._isNfe()
        if isNfe is False:
            return None

        self._objNf['chave_nota'] = returnDataInDictOrArray(
            self._dataXml, ['nfeProc', 'NFe', 'infNFe', '@Id'])[3:]
        self._tagIde()
        self._tagEmit()
        self._tagDest()
        self._tagDet()
        self._tagTotal()

        return self._objNf
Пример #10
0
 def _tagDest(self):
     dataTagDest = returnDataInDictOrArray(
         self._dataXml, ['nfeProc', 'NFe', 'infNFe', 'dest'])
     tagDest = TagDest(dataTagDest)
     self._objNf['destinatario'] = tagDest.getData()
Пример #11
0
 def _tagEmit(self):
     dataTagEmit = returnDataInDictOrArray(
         self._dataXml, ['nfeProc', 'NFe', 'infNFe', 'emit'])
     tagEmit = TagEmit(dataTagEmit)
     self._objNf['emitente'] = tagEmit.getData()
Пример #12
0
 def _tagIde(self):
     dataTagIde = returnDataInDictOrArray(
         self._dataXml, ['nfeProc', 'NFe', 'infNFe', 'ide'])
     tagIde = TagIde(dataTagIde)
     self._objNf['identificao_nfe'] = tagIde.getData()
Пример #13
0
 def _isNfe(self):
     keyNf = returnDataInDictOrArray(self._dataXml,
                                     ['nfeProc', 'NFe', 'infNFe', '@Id'])
     return True if keyNf != '' else False
Пример #14
0
 def _getNcmName(self, ncm):
     return returnDataInDictOrArray(self._listNcmName, [ncm])
Пример #15
0
 def _getNcmRule(self, ncm, cfop):
     if cfop not in self._listCfopTributado:
         return 'CFOPNaoTributado'
     return returnDataInDictOrArray(self._listNcm, [ncm])
Пример #16
0
    def getData(self):
        for key, dataTagDet in enumerate(self._listDataTagDet):

            self._objDet['numero_item'] = key + 1
            self._objDet['codigo_produto'] = returnDataInDictOrArray(
                dataTagDet, ['prod', 'cProd'])
            self._objDet['nome_produto'] = treatsFieldAsText(
                returnDataInDictOrArray(dataTagDet, ['prod', 'xProd']))
            self._objDet['global_trade_item_number'] = returnDataInDictOrArray(
                dataTagDet, ['prod', 'cEAN'])
            self._objDet['ncm'] = returnDataInDictOrArray(
                dataTagDet, ['prod', 'NCM'])
            self._objDet['cfop'] = treatsFieldAsNumber(returnDataInDictOrArray(
                dataTagDet, ['prod', 'CFOP']),
                                                       isInt=True)
            self._objDet['unidade'] = returnDataInDictOrArray(
                dataTagDet, ['prod', 'uCom'])
            self._objDet['quantidade'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'qCom']), 4)
            self._objDet['valor_unitario'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'vUnCom']), 10)
            self._objDet['valor_produto'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'vProd']), 10)
            self._objDet['valor_frete'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'vFrete']), 10)
            self._objDet['vseg'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'vSeg']), 10)
            self._objDet['valor_outros'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'vOutro']), 10)
            self._objDet['valor_desconto'] = treatsFieldAsDecimal(
                returnDataInDictOrArray(dataTagDet, ['prod', 'vDesc']), 10)
            self._objDet['valor_total'] = self.__amountValorContabil()
            self._objDet['informacao_adicionais'] = treatsFieldAsText(
                returnDataInDictOrArray(dataTagDet, ['infAdProd']))

            self._objListTagDet.append(self._objDet.copy())
            self._objDet.clear()

        return self._objListTagDet
Пример #17
0
 def _getCnpjOrCpf(self):
     cnpj = returnDataInDictOrArray(self._dataTagEmit, ['CNPJ'])
     cpf = returnDataInDictOrArray(self._dataTagEmit, ['CPF'])
     self._inscricaoFederal = cnpj if cnpj != '' else cpf
     self._tipoInscricaoFederal = 'CNPJ' if cnpj != '' else 'CPF'