예제 #1
0
    def isPaymentsLysPorMoeda(self, file):
        dataFile = leXls_Xlsx(file)

        for data in dataFile:
            identificationField = funcoesUteis.treatTextFieldInVector(data, 5)
            if identificationField.count('NMPESSOACREDORA') > 0:
                return True
예제 #2
0
    def getSettingsFromToOfAccounts(self):
        dataFile = leXls_Xlsx(self._wayFileSettings, 'DeParaPlanoContas')

        for data in dataFile:
            try:
                fieldHeader = funcoesUteis.treatTextFieldInVector(data, 1)
                if fieldHeader.count('CODIGO CONTA SISTEMA CLIENTE') > 0:
                    self._posionsOfHeaderFromToAccounts.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        self._posionsOfHeaderFromToAccounts[
                            nameField] = keyField
                    continue

                valueComparation = funcoesUteis.treatTextFieldInVector(
                    data, 1, self._posionsOfHeaderFromToAccounts,
                    "Código Conta Sistema Cliente")

                accountDominio = int(
                    funcoesUteis.treatNumberFieldInVector(
                        data, 4, self._posionsOfHeaderFromToAccounts,
                        "Conta Contábil Domínio"))

                if valueComparation != "" and accountDominio != "":
                    self._valuesFromToAccounts[
                        valueComparation] = accountDominio
            except Exception as e:
                pass

        return self._valuesFromToAccounts
예제 #3
0
    def process(self):
        try:
            companiesDominio = self._geempre.getCompanies()

            companiesExcel = leXls_Xlsx(
                'C:/Programming/baymax/backend/extract/data/empresas_grupo.xlsm',
                'EMPRESAS')

            print('- Exportando dados de movimentação geral empresas:')

            for companie in companiesExcel:
                codi_emp = funcoesUteis.treatNumberField(companie[0],
                                                         isInt=True)
                nome_emp = funcoesUteis.treatTextField(companie[1])
                group = funcoesUteis.treatTextField(companie[2])

                dataCompanie = {'codi_emp': codi_emp, 'groupCompanie': group}

                existCompanieDominio = list(
                    filter(
                        lambda companieDominio: companieDominio['codi_emp'] ==
                        codi_emp, companiesDominio))
                if len(existCompanieDominio) > 0:
                    self._collection.update_one({"codi_emp": codi_emp},
                                                {"$set": dataCompanie},
                                                upsert=True)
                    print(f"\t - {codi_emp} - {nome_emp}")

        except Exception as e:
            print(f"O erro é: {e}")
        finally:
            self._connectionMongo.closeConnection()
    def __init__(self):
        self._namesProductsBase = leXls_Xlsx(os.path.join('C:/Programming/baymax/backend/extract/data/bkp', 'produtos_comparar.xlsx'))
        self._namesProductsBase = funcoesUteis.removeAnArrayFromWithinAnother(self._namesProductsBase)
        self._geempre = ExtractGeempre()
        self._today = datetime.date.today()
        self._currentMonth = self._today.month
        self._currentYear = self._today.year

        self._connectionMongo = ConnectMongo()
        self._dbMongo = self._connectionMongo.getConnetion()
        self._collection = self._dbMongo['ExtractEntryNoteProducts']
예제 #5
0
    def getSettingsProviderOrExpense(self):
        dataFile = leXls_Xlsx(self._wayFileSettings, 'FornecedorOuDespesa')

        for data in dataFile:
            try:
                if str(data[0]).upper().count('QUANDO NO CAMPO') > 0:
                    self._posionsOfHeaderProviderOrExpense.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        self._posionsOfHeaderProviderOrExpense[
                            nameField] = keyField
                    continue

                fieldComparation = funcoesUteis.treatTextFieldInVector(
                    data, 1, self._posionsOfHeaderProviderOrExpense,
                    "Quando no Campo")
                fieldComparation = self._settingsFieldComparation[
                    fieldComparation]

                typeComparation = funcoesUteis.treatTextFieldInVector(
                    data, 2, self._posionsOfHeaderProviderOrExpense,
                    "Tipo comparação")
                typeComparation = self._settingsTypeComparation[
                    typeComparation]

                valueComparation = funcoesUteis.treatTextFieldInVector(
                    data, 3, self._posionsOfHeaderProviderOrExpense, "Valor")

                accountDominio = int(
                    funcoesUteis.treatNumberFieldInVector(
                        data, 4, self._posionsOfHeaderProviderOrExpense,
                        "Conta Contábil Domínio"))

                overwriteAccount = funcoesUteis.treatTextFieldInVector(
                    data, 5, self._posionsOfHeaderProviderOrExpense,
                    "Sobrescrever a Conta na Planilha Processada?")

                if fieldComparation != "" and valueComparation != "" and accountDominio > 0:
                    self._valuesOfLineProviderOrExpense = {
                        "fieldComparation": fieldComparation,
                        "typeComparation": typeComparation,
                        "valueComparation": valueComparation,
                        "accountDominio": accountDominio,
                        "overwriteAccount": overwriteAccount
                    }

                    self._valuesOfFileProviderOrExpense.append(
                        self._valuesOfLineProviderOrExpense.copy())
            except Exception as e:
                pass

        return self._valuesOfFileProviderOrExpense
예제 #6
0
    def getSettingsAccountAndHistoricOthers(self):
        dataFile = leXls_Xlsx(self._wayFileSettings, 'ContasEHistoricoOutros')

        for data in dataFile:
            try:
                fieldHeader = funcoesUteis.treatTextFieldInVector(data, 1)
                if fieldHeader.count('QUANDO HOUVER') > 0:
                    self._posionsOfHeaderAccountAndHistoricOthers.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        self._posionsOfHeaderAccountAndHistoricOthers[
                            nameField] = keyField
                    continue

                # juros, multa, desconto
                fieldComparation = funcoesUteis.treatTextFieldInVector(
                    data, 1, self._posionsOfHeaderAccountAndHistoricOthers,
                    "Quando houver")
                if fieldComparation == "":
                    continue

                # historico ou conta contabil
                fieldOthers = funcoesUteis.treatTextFieldInVector(
                    data, 2, self._posionsOfHeaderAccountAndHistoricOthers,
                    "na Domínio o código do(a)")

                valueDominio = funcoesUteis.treatNumberFieldInVector(
                    data, 3, self._posionsOfHeaderAccountAndHistoricOthers,
                    "Será o")

                if fieldComparation != "" and fieldOthers != "" and valueDominio != "":
                    self._valuesAccountAndHistoricOthers[
                        fieldComparation, fieldOthers] = valueDominio

                whenColumnDocumento = funcoesUteis.treatTextFieldInVector(
                    data, 7, self._posionsOfHeaderAccountAndHistoricOthers,
                    "Quando na Coluna Documento")

                compositionHistoric = funcoesUteis.treatTextFieldInVector(
                    data,
                    8,
                    self._posionsOfHeaderAccountAndHistoricOthers,
                    "Composição Histórico",
                    keepTextOriginal=False)

                if whenColumnDocumento != "" and compositionHistoric != "":
                    self._valuesAccountAndHistoricOthers[
                        whenColumnDocumento] = compositionHistoric

            except Exception as e:
                pass
예제 #7
0
    def getSettingsExtract(self):
        dataFile = leXls_Xlsx(self._wayFileSettings, 'ExtratoBancario')

        for data in dataFile:
            try:
                if str(data[0]).upper().count('QUANDO NO CAMPO') > 0:
                    self._posionsOfHeaderExtracts.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        self._posionsOfHeaderExtracts[nameField] = keyField
                    continue

                fieldComparation = funcoesUteis.treatTextFieldInVector(
                    data, 1, self._posionsOfHeaderExtracts, "Quando no Campo")
                fieldComparation = self._settingsFieldComparationExtract[
                    fieldComparation]

                operationComparation = funcoesUteis.treatTextFieldInVector(
                    data, 2, self._posionsOfHeaderExtracts, "Operação for")
                operationComparation = self._settingsOperationComparation[
                    operationComparation]

                typeComparation = funcoesUteis.treatTextFieldInVector(
                    data, 3, self._posionsOfHeaderExtracts, "Tipo comparação")
                typeComparation = self._settingsTypeComparation[
                    typeComparation]

                valueComparation = funcoesUteis.treatTextFieldInVector(
                    data, 4, self._posionsOfHeaderExtracts, "Valor")

                accountDominio = int(
                    funcoesUteis.treatNumberFieldInVector(
                        data, 5, self._posionsOfHeaderExtracts,
                        "Conta Contábil Domínio"))

                if fieldComparation != "" and valueComparation != "" and accountDominio > 0:
                    self._valuesOfLineExtracts = {
                        "fieldComparation": fieldComparation,
                        "operationComparation": operationComparation,
                        "typeComparation": typeComparation,
                        "valueComparation": valueComparation,
                        "accountDominio": accountDominio
                    }

                    self._valuesOfFileExtracts.append(
                        self._valuesOfLineExtracts.copy())
            except Exception as e:
                pass

        return self._valuesOfFileExtracts
    def getLivroCaixa(self):
        dataFile = leXls_Xlsx(self._file, 'Lancamentos')

        for data in dataFile:
            if str(data[0]).upper().count('DOCUMENTO') > 0:
                self._posionsOfHeader.clear()
                for keyField, nameField in enumerate(data):
                    nameField = funcoesUteis.treatTextField(nameField)
                    self._posionsOfHeader[nameField] = keyField
                continue

            dateLivro = funcoesUteis.treatDateFieldInVector(
                data, 1, self._posionsOfHeader, "Data")
            movementType = funcoesUteis.treatTextFieldInVector(
                data, 2, self._posionsOfHeader, "Tipo Movimento")
            account = funcoesUteis.treatTextFieldInVector(
                data, 3, self._posionsOfHeader, "Conta Contábil")
            nameAccount = funcoesUteis.treatTextFieldInVector(
                data, 4, self._posionsOfHeader, "Nome Conta")
            amount = funcoesUteis.treatDecimalFieldInVector(
                data, 5, self._posionsOfHeader, "Valor")
            document = funcoesUteis.treatTextFieldInVector(
                data, 6, self._posionsOfHeader, "Documento")
            documentType = funcoesUteis.treatTextFieldInVector(
                data, 7, self._posionsOfHeader, "Tipo Documento")
            participante = funcoesUteis.treatTextFieldInVector(
                data, 8, self._posionsOfHeader, "Participante")
            imovelRural = funcoesUteis.treatTextFieldInVector(
                data, 9, self._posionsOfHeader, "Imóvel Rural")
            historic = funcoesUteis.treatTextFieldInVector(
                data, 10, self._posionsOfHeader, "Histórico")

            if amount != 0:
                self._dataOfLine = {
                    'dateLivro': dateLivro,
                    'movementType': movementType,
                    'account': account,
                    'nameAccount': nameAccount,
                    'amount': amount,
                    'document': document,
                    'documentType': documentType,
                    'participante': participante,
                    'imovelRural': imovelRural,
                    'historic': historic
                }

                self._dataOfFile.append(self._dataOfLine.copy())

        return self._dataOfFile
    def process(self):
        try:
            companiesDominio = self._geempre.getCompanies()

            companiesExcel = leXls_Xlsx(
                'C:/Programming/baymax/backend/extract/data/empresas_integrattion_old.xlsx',
                'Já Avaliadas - Hist')

            print('- Lendo dados das integrações antigas:')

            for companie in companiesExcel:
                codi_emp = funcoesUteis.treatNumberField(companie[0],
                                                         isInt=True)
                nome_emp = funcoesUteis.treatTextField(companie[1])
                responsibleFinancialClientOld = funcoesUteis.treatTextField(
                    companie[4])
                obsAccountPaidOld = funcoesUteis.treatTextField(companie[8])
                dateAccountPaidOld = funcoesUteis.treatTextField(companie[7])
                layoutsAccountPaidOld = funcoesUteis.treatTextField(
                    companie[9])
                hasIntegrated = funcoesUteis.treatTextField(companie[10])

                dataCompanie = {
                    'codi_emp': codi_emp,
                    'responsibleFinancialClientOld':
                    responsibleFinancialClientOld,
                    'obsAccountPaidOld': obsAccountPaidOld,
                    'dateAccountPaidOld': dateAccountPaidOld,
                    'layoutsAccountPaidOld': layoutsAccountPaidOld
                }

                existCompanieDominio = list(
                    filter(
                        lambda companieDominio: companieDominio['codi_emp'] ==
                        codi_emp, companiesDominio))
                if len(existCompanieDominio) > 0 and hasIntegrated == "SIM":
                    self._collection.update_one({"codi_emp": codi_emp},
                                                {"$set": dataCompanie},
                                                upsert=True)
                    print(f"\t - {codi_emp} - {nome_emp}")

        except Exception as e:
            print(f"O erro é: {e}")
        finally:
            self._connectionMongo.closeConnection()
예제 #10
0
    def __init__(self):
        self._wayCompanies = os.path.join(wayDefault['wayDefaultToSaveFiles'],
                                          'empresas.json')
        self._namesProductsBase = leXls_Xlsx(
            os.path.join(wayDefault['wayDefaultToSaveFiles'],
                         'produtos_comparar.xlsx'))

        with open(self._wayCompanies) as companies:
            self._companies = json.load(companies)

        self._exportNotas = os.path.join(wayDefault['wayDefaultToSaveFiles'],
                                         'analise_imobilizado.csv')
        self._exportNotas = open(self._exportNotas, 'w', encoding='utf-8')

        self._exportNotas.write(
            f"Codigo Empresa;Nome Empresa;CNPJ;Codigo Nota;Numero Nota;Codigo Fornecedor;Nome Fornecedor;Emissao;Entrada"
            f"Especie;Serie;Acumulador;Valor Contabil;Codigo Produto;Descricao;CFOP;Quantidade;Valor Unitario;Valor Total;Base ICMS;"
            f"Aliquota ICMS;Valor ICMS;Base ICMS ST;Valor ICMS ST\n")
예제 #11
0
    def getSettingsBanks(self):
        dataFile = leXls_Xlsx(self._wayFileSettings, 'Bancos')

        for data in dataFile:
            try:
                if str(data[0]).upper().count('COMPARAR COM') > 0 or str(
                        data[0]).upper().count('BANCO') > 0:
                    self._posionsOfHeaderBanks.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        self._posionsOfHeaderBanks[nameField] = keyField
                    continue

                compareWith = funcoesUteis.treatTextFieldInVector(
                    data, 1, self._posionsOfHeaderBanks, "Comparar Com")
                compareWith = "" if compareWith != "EXTRATO BANCARIO" and compareWith != "FINANCEIRO DO CLIENTE" else compareWith

                nameBank = funcoesUteis.treatTextFieldInVector(
                    data, 2, self._posionsOfHeaderBanks, "Banco")

                account = funcoesUteis.treatTextFieldInVector(
                    data, 3, self._posionsOfHeaderBanks,
                    "Conta Corrente (Sem o Dígito Verificador)")
                # account = account[:-1] # o -1 é pra tirar o digíto verificador caso o pessoal preencha na configuração, então pega sempre um char a menos evitando este problema

                accountDominio = int(
                    funcoesUteis.treatNumberFieldInVector(
                        data, 4, self._posionsOfHeaderBanks,
                        "Conta Contábil Banco na Domínio"))

                if nameBank != "" and accountDominio > 0:
                    self._valuesOfLineBanks = {
                        "compareWith": compareWith,
                        "nameBankComparation": nameBank,
                        "accountComparation": account,
                        "accountDominio": accountDominio
                    }

                    self._valuesOfFileBanks.append(
                        self._valuesOfLineBanks.copy())
            except Exception as e:
                pass

        return self._valuesOfFileBanks
    def getAccountPlan(self):
        dataFile = leXls_Xlsx(self._file, 'PlanoContas')

        for data in dataFile:
            if str(data[0]).upper().count('CONTA') > 0:
                self._posionsOfHeaderAccountPlan.clear()
                for keyField, nameField in enumerate(data):
                    nameField = funcoesUteis.treatTextField(nameField)
                    self._posionsOfHeaderAccountPlan[nameField] = keyField
                continue

            account = funcoesUteis.treatTextFieldInVector(
                data, 1, self._posionsOfHeaderAccountPlan, "Conta")
            # nameAccount = funcoesUteis.treatTextFieldInVector(data, 2, self._posionsOfHeaderAccountPlan, "Nome")
            # nameAccountMain = funcoesUteis.treatTextFieldInVector(data, 3, self._posionsOfHeaderAccountPlan, "Grupo Principal")
            # nameAccountSubMain = funcoesUteis.treatTextFieldInVector(data, 4, self._posionsOfHeaderAccountPlan, "Subgrupo")
            accountDominio = funcoesUteis.treatNumberFieldInVector(
                data, 5, self._posionsOfHeaderAccountPlan,
                "Código Conta Domínio")

            self._dataOfLineAccountPlan[account] = accountDominio

        return self._dataOfLineAccountPlan
예제 #13
0
    def process(self):
        try:
            companiesDominio = list(self._collection.find({}))

            companiesExcel = leXls_Xlsx(
                'C:/Programming/baymax/backend/extract/data/empresas_externos.xlsx',
                'GERAL')

            print('- Processando empresas dos externos:')

            for companie in companiesExcel:
                codi_emp = funcoesUteis.treatNumberField(companie[0],
                                                         isInt=True)
                nome_emp = funcoesUteis.treatTextField(companie[1])

                existCompanieDominio = list(
                    filter(
                        lambda companieDominio: companieDominio['codi_emp'] ==
                        codi_emp, companiesDominio))
                if len(existCompanieDominio) > 0:
                    dataCompanie = {
                        'codi_emp':
                        codi_emp,
                        'grupos_contabil':
                        f"{existCompanieDominio[0]['grupos_contabil']},EXTERNOS",
                        'grupos_fiscal':
                        f"{existCompanieDominio[0]['grupos_fiscal']},EXTERNOS"
                    }
                    self._collection.update_one({"codi_emp": codi_emp},
                                                {"$set": dataCompanie},
                                                upsert=True)
                    print(f"\t - {codi_emp} - {nome_emp}")

        except Exception as e:
            print(f"O erro é: {e}")
        finally:
            self._connectionMongo.closeConnection()
import entities.models.LayoutContasPagarReceber as mcpr
import tools.funcoes as tf
import tools.leArquivos as tLerArq

caminho_teste = "C:\\Users\\Elder Vivot Dias\\Downloads\\ARQUIVOS TESTE FRANCESINHA\\BANCO BRADESCO GOLDMAQ"
#caminho_teste = "D:\\temp"

col_nota = -1
for linha in tLerArq.leXls_Xlsx(
        tLerArq.buscaArquivosEmPasta(caminho_teste, "xls")):
    # este for vai pegar o cabeçalho pelo nome das colunas
    for k, value in enumerate(linha):
        value = tf.trataCampoTexto(value)
        if value == tf.trataCampoTexto("Seu Número"):
            col_nota = k

    print(mcpr.trataNota(linha[col_nota]))
예제 #15
0
    def process(self, file):

        if self.isPaymentsLysPorMoeda(file) is not True:
            return []

        valuesOfLine = {}
        valuesOfFile = []
        posionsOfHeader = {}

        dataFile = leXls_Xlsx(file)

        for data in dataFile:
            try:
                headerField = funcoesUteis.treatTextFieldInVector(data, 5)
                if headerField.count('NMPESSOACREDORA') > 0:
                    posionsOfHeader.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        posionsOfHeader[nameField] = keyField
                    continue

                idAccountPaid = funcoesUteis.treatTextFieldInVector(
                    data, 1, posionsOfHeader, "idsContaPagar")
                paymentDate = funcoesUteis.treatDateFieldInVector(
                    data, 14, posionsOfHeader, "dtPagamento")
                accountCode = funcoesUteis.treatNumberFieldInVector(
                    data, 23, posionsOfHeader, "nrContaContabil")

                bankAndAccount = funcoesUteis.treatTextFieldInVector(
                    data, 20, posionsOfHeader, "idFonte")

                idCentroCusto = funcoesUteis.treatTextFieldInVector(
                    data, 17, posionsOfHeader, "idCentroDeCustoPagamento")

                positionWordBank = bankAndAccount.find('BANCO')
                if positionWordBank >= 0:
                    positionPlusSign = bankAndAccount[positionWordBank:].find(
                        '>') + positionWordBank
                    bank = funcoesUteis.returnBankForName(
                        funcoesUteis.treatTextField(
                            bankAndAccount[positionWordBank +
                                           6:positionPlusSign]))

                    positionWordAccount = bankAndAccount.find('CONTA')
                    positionSplitSign = bankAndAccount[
                        positionWordAccount:].find(
                            '/') + positionWordAccount + 1
                    accountBank = funcoesUteis.treatTextField(
                        bankAndAccount[positionSplitSign:])
                else:
                    bank = "DINHEIRO"
                    accountBank = ""
                    bank = f'{bank} {idCentroCusto}'

                if paymentDate is not None:
                    valuesOfLine = {
                        "idAccountPaid": idAccountPaid,
                        "paymentDate": paymentDate,
                        "bank": bank,
                        "accountBank": accountBank,
                        "accountCode": accountCode
                    }

                    valuesOfFile.append(valuesOfLine.copy())
            except Exception:
                pass
        return valuesOfFile
예제 #16
0
    def getExtracts(self):
        dataFile = leXls_Xlsx(self._file, 'ExtratosBancarios')

        for key, data in enumerate(dataFile):
            if str(data[0]).upper().count('DATA') > 0:
                self._posionsOfHeaderExtracts.clear()
                for keyField, nameField in enumerate(data):
                    nameField = funcoesUteis.treatTextField(nameField)
                    self._posionsOfHeaderExtracts[nameField] = keyField
                continue

            dateExtract = funcoesUteis.treatDateFieldInVector(data, 1)
            accountCodeDebit = funcoesUteis.treatNumberFieldInVector(
                data, 2, self._posionsOfHeaderExtracts, "Debito")
            accountCodeCredit = funcoesUteis.treatNumberFieldInVector(
                data, 3, self._posionsOfHeaderExtracts, "Credito")
            amount = funcoesUteis.treatDecimalFieldInVector(
                data, 4, self._posionsOfHeaderExtracts, "Valor")
            historicCode = funcoesUteis.treatNumberFieldInVector(
                data, 5, self._posionsOfHeaderExtracts, "Cod. Hist")
            historic = funcoesUteis.treatTextFieldInVector(
                data, 6, self._posionsOfHeaderExtracts, "Historico")

            foundProofInPayments = funcoesUteis.treatTextFieldInVector(
                data, 7, self._posionsOfHeaderExtracts,
                "Encontrou no Financeiro?")
            if foundProofInPayments == "1":
                foundProofInPayments = True
            elif foundProofInPayments == "0":
                foundProofInPayments = False
            else:
                foundProofInPayments = ""

            bank = funcoesUteis.treatTextFieldInVector(
                data, 10, self._posionsOfHeaderExtracts, "Banco")
            account = funcoesUteis.treatTextFieldInVector(
                data, 11, self._posionsOfHeaderExtracts, "Conta Corrente")
            typeTransaction = funcoesUteis.treatTextFieldInVector(
                data, 13, self._posionsOfHeaderExtracts, "Tipo Transacao")
            operation = funcoesUteis.treatTextFieldInVector(
                data, 14, self._posionsOfHeaderExtracts, "Operacao")
            document = funcoesUteis.treatTextFieldInVector(
                data, 16, self._posionsOfHeaderExtracts, "Documento")

            if dateExtract is not None and amount > 0:
                self._extractsOfLine = {
                    "dateTransaction": dateExtract,
                    "accountCodeDebit": accountCodeDebit,
                    "accountCodeCredit": accountCodeCredit,
                    "amount": amount,
                    "historicCode": historicCode,
                    "historic": historic,
                    "foundProofInPayments": foundProofInPayments,
                    "bank": bank,
                    "account": account,
                    "typeTransaction": typeTransaction,
                    "operation": operation,
                    "document": document
                }
                self._extractsOfFile.append(self._extractsOfLine.copy())
                self._extractsOfLine.clear()

        return self._extractsOfFile
예제 #17
0
    def getPayments(self):
        dataFile = leXls_Xlsx(self._file, 'Pagamentos')

        for data in dataFile:
            if str(data[0]).upper().count('LOTE') > 0:
                self._posionsOfHeaderPayments.clear()
                for keyField, nameField in enumerate(data):
                    nameField = funcoesUteis.treatTextField(nameField)
                    self._posionsOfHeaderPayments[nameField] = keyField
                continue

            numberLote = int(
                funcoesUteis.treatDecimalFieldInVector(
                    data, 1, self._posionsOfHeaderPayments, "Lote"))
            document = funcoesUteis.treatTextFieldInVector(
                data, 2, self._posionsOfHeaderPayments, "Documento")

            findNote = funcoesUteis.treatTextFieldInVector(
                data, 3, self._posionsOfHeaderPayments, "NF na Domínio?")
            if findNote == "1":
                findNote = True
            elif findNote == "0":
                findNote = False
            else:
                findNote = ""

            parcelNumber = funcoesUteis.treatTextFieldInVector(
                data, 4, self._posionsOfHeaderPayments, "Parcela")
            nameProvider = funcoesUteis.treatTextFieldInVector(
                data, 5, self._posionsOfHeaderPayments, "Fornecedor")
            cgceProvider = funcoesUteis.treatTextFieldInVector(
                data, 6, self._posionsOfHeaderPayments, "CNPJ Fornecedor")

            bankAndAccount = funcoesUteis.treatTextFieldInVector(
                data, 7, self._posionsOfHeaderPayments,
                "Banco Financeiro").split('-')
            if len(bankAndAccount) == 2:
                bank = bankAndAccount[0]
                account = bankAndAccount[1]
            elif len(bankAndAccount) == 1:
                bank = bankAndAccount[0]
                account = ""
            else:
                bank = ""
                account = ""

            bankAndAccountExtract = funcoesUteis.treatTextFieldInVector(
                data, 8, self._posionsOfHeaderPayments,
                "Banco Extrato").split('-')
            if len(bankAndAccountExtract) == 2:
                bankExtract = bankAndAccountExtract[0]
                accountExtract = bankAndAccountExtract[1]
            elif len(bankAndAccountExtract) == 1:
                bankExtract = bankAndAccountExtract[0]
                accountExtract = ""
            else:
                bankExtract = ""
                accountExtract = ""

            foundProof = funcoesUteis.treatTextFieldInVector(
                data, 9, self._posionsOfHeaderPayments, "Comprovante Pagto?")
            if foundProof == "1":
                foundProof = True
            elif foundProof == "0":
                foundProof = False
            else:
                foundProof = ""

            paymentDate = funcoesUteis.treatDateFieldInVector(
                data, 10, self._posionsOfHeaderPayments, "Data Financeiro")
            extractDate = funcoesUteis.treatDateFieldInVector(
                data, 11, self._posionsOfHeaderPayments, "Data Extrato")
            dateOfImport = funcoesUteis.treatDateFieldInVector(
                data, 12, self._posionsOfHeaderPayments, "Importação Domínio")
            dueDate = funcoesUteis.treatTextFieldInVector(
                data, 13, self._posionsOfHeaderPayments, "Vencimento")
            issueDate = funcoesUteis.treatTextFieldInVector(
                data, 14, self._posionsOfHeaderPayments, "Emissão")
            amountPaid = funcoesUteis.treatDecimalFieldInVector(
                data, 15, self._posionsOfHeaderPayments, "Valor Pago")
            amountDiscount = funcoesUteis.treatDecimalFieldInVector(
                data, 16, self._posionsOfHeaderPayments, "Desconto")
            amountInterest = funcoesUteis.treatDecimalFieldInVector(
                data, 17, self._posionsOfHeaderPayments, "Juros")
            amountFine = funcoesUteis.treatDecimalFieldInVector(
                data, 18, self._posionsOfHeaderPayments, "Multa")
            amountOriginal = funcoesUteis.treatDecimalFieldInVector(
                data, 19, self._posionsOfHeaderPayments, "Valor Original")
            accountCode = funcoesUteis.treatNumberFieldInVector(
                data, 20, self._posionsOfHeaderPayments,
                "Conta Contabil Domínio")
            codiEmp = funcoesUteis.treatTextFieldInVector(
                data, 21, self._posionsOfHeaderPayments, "Codigo Empresa")
            historic = funcoesUteis.treatTextFieldInVector(
                data, 22, self._posionsOfHeaderPayments,
                "Historico Financeiro")
            category = funcoesUteis.treatTextFieldInVector(
                data, 23, self._posionsOfHeaderPayments, "Categoria")
            accountPlan = funcoesUteis.treatTextFieldInVector(
                data, 24, self._posionsOfHeaderPayments, "Plano de Contas")
            cgcePaying = funcoesUteis.treatTextFieldInVector(
                data, 25, self._posionsOfHeaderPayments, "CNPJ Pagador")
            historicExtract = funcoesUteis.treatTextFieldInVector(
                data, 26, self._posionsOfHeaderPayments,
                "Historico Extrato Bancário")
            accountCodeOld = funcoesUteis.treatTextFieldInVector(
                data, 27, self._posionsOfHeaderPayments,
                "Conta Contabil Sistema Cliente")

            if amountPaid != 0:
                self._paymentsOfLine = {
                    "numberLote": numberLote,
                    "document": document,
                    "findNote": findNote,
                    "parcelNumber": parcelNumber,
                    "nameProvider": nameProvider,
                    "cgceProvider": cgceProvider,
                    "bank": bank,
                    "account": account,
                    "bankExtract": bankExtract,
                    "accountExtract": accountExtract,
                    "foundProof": foundProof,
                    "paymentDate": paymentDate,
                    "dateExtract": extractDate,
                    "dateOfImport": dateOfImport,
                    "dueDate": dueDate,
                    "issueDate": issueDate,
                    "amountPaid": amountPaid,
                    "amountDiscount": amountDiscount,
                    "amountInterest": amountInterest,
                    "amountFine": amountFine,
                    "amountOriginal": amountOriginal,
                    "accountCode": accountCode,
                    "companyBranch": codiEmp,
                    "historic": historic,
                    "category": category,
                    "accountPlan": accountPlan,
                    "cgcePaying": cgcePaying,
                    "historicExtract": historicExtract,
                    "accountCodeOld": accountCodeOld
                }

                self._paymentsOfFile.append(self._paymentsOfLine.copy())

        return self._paymentsOfFile
예제 #18
0
    def process(self, file):

        if self.isPaymentsLysPorData(file) is not True:
            return []

        dataFile = leXls_Xlsx(file)

        valuesOfLine = {}
        valuesOfFile = []
        posionsOfHeader = {}

        for data in dataFile:
            try:
                headerField = funcoesUteis.treatTextFieldInVector(data, 5)
                if headerField.count('IDPESSOACREDORA') > 0:
                    posionsOfHeader.clear()
                    for keyField, nameField in enumerate(data):
                        nameField = funcoesUteis.treatTextField(nameField)
                        posionsOfHeader[nameField] = keyField
                    continue

                idAccountPaid = funcoesUteis.treatTextFieldInVector(
                    data, 1, posionsOfHeader, "idsContaPagar")
                parcelNumber = funcoesUteis.treatTextFieldInVector(
                    data, 2, posionsOfHeader, "cdParcela")
                dueDate = funcoesUteis.transformaCampoDataParaFormatoBrasileiro(
                    funcoesUteis.treatDateFieldInVector(
                        data, 4, posionsOfHeader, "dtVencimento"))
                nameProvider = funcoesUteis.treatTextFieldInVector(
                    data, 6, posionsOfHeader, "nmPessoaCredora")
                document = funcoesUteis.treatTextFieldInVector(
                    data, 11, posionsOfHeader, "nrDocFiscalOriginal")
                issueDate = funcoesUteis.transformaCampoDataParaFormatoBrasileiro(
                    funcoesUteis.treatDateFieldInVector(
                        data, 12, posionsOfHeader, "dtEmissao"))
                amountPaid = funcoesUteis.treatDecimalFieldInVector(
                    data, 36, posionsOfHeader, "valorLiquido")
                amountDiscount = funcoesUteis.treatDecimalFieldInVector(
                    data, 19, posionsOfHeader, "valordesconto")
                amountInterest = funcoesUteis.treatDecimalFieldInVector(
                    data, 20, posionsOfHeader, "valormulta")
                amountFine = funcoesUteis.treatDecimalFieldInVector(
                    data, 30, posionsOfHeader, "valorjuro")
                amountOriginal = funcoesUteis.treatDecimalFieldInVector(
                    data, 10)
                historic = funcoesUteis.treatTextFieldInVector(
                    data, 34, posionsOfHeader, "justificaticaDaConta")

                paymentsMoeda = self.returnDataPaymentsPorMoeda(idAccountPaid)

                paymentDate = funcoesUteis.analyzeIfFieldIsValid(
                    paymentsMoeda, "paymentDate", None)
                bank = funcoesUteis.analyzeIfFieldIsValid(
                    paymentsMoeda, "bank")
                accountBank = funcoesUteis.analyzeIfFieldIsValid(
                    paymentsMoeda, "accountBank")
                accountCode = funcoesUteis.analyzeIfFieldIsValid(
                    paymentsMoeda, "accountCode")

                if paymentDate is not None and amountPaid > 0:
                    valuesOfLine = {
                        "document": document,
                        "parcelNumber": parcelNumber,
                        "nameProvider": nameProvider,
                        "paymentDate": paymentDate,
                        "dueDate": dueDate,
                        "issueDate": issueDate,
                        "bank": bank,
                        "account": accountBank,
                        "amountPaid": amountPaid,
                        "amountDiscount": amountDiscount,
                        "amountInterest": amountInterest,
                        "amountFine": amountFine,
                        "amountOriginal": amountOriginal,
                        "accountCodeOld": accountCode,
                        "historic": historic
                    }

                    valuesOfFile.append(valuesOfLine.copy())
            except Exception:
                pass
        return valuesOfFile