コード例 #1
0
    def saveMongo(self, codiEmp, cgceMatriz, companieMonthsAmountNotes):
        dateStart = retornaCampoComoData('01/01/2021')
        dateNow = datetime.today() - relativedelta(months=1)
        
        year = dateStart.year
        startYear = dateStart.year
        startMonth = dateStart.month
        endYear = dateNow.year
        endMonth = dateNow.month

        while year <= endYear:
            months = extractFunctions.returnMonthsOfYear(year, startMonth, startYear, endMonth, endYear)
            
            print('\t\t - ', end='')
            for month in months:
                companieDataToSave = {}

                monthYearFormated = f'{month:0>2}/{year}'
                print(f'{monthYearFormated}, ', end='')

                amountNotaSaida = list(filter(lambda companieMonths: companieMonths['comp'][:10] == f"{year}-{month:0>2}-01" \
                    and companieMonths['tipo'] == 'SAIDA', companieMonthsAmountNotes))
                amountNotaSaida = analyzeIfFieldIsValidMatrix(amountNotaSaida, 1, [])

                amountNotaEntrada = list(filter(lambda companieMonths: companieMonths['comp'][:10] == f"{year}-{month:0>2}-01" \
                    and companieMonths['tipo'] == 'ENTRADA', companieMonthsAmountNotes))
                amountNotaEntrada = analyzeIfFieldIsValidMatrix(amountNotaEntrada, 1, [])

                amountNotaServico = list(filter(lambda companieMonths: companieMonths['comp'][:10] == f"{year}-{month:0>2}-01" \
                    and companieMonths['tipo'] == 'SERVICO', companieMonthsAmountNotes))
                amountNotaServico = analyzeIfFieldIsValidMatrix(amountNotaServico, 1, [])
    
                companieDataToSave['qtd_notas_saidas_operacao'] = analyzeIfFieldIsValid(amountNotaSaida, 'qtd_notas_operacao', 0)
                companieDataToSave['qtd_notas_saidas_operacao_dori'] = analyzeIfFieldIsValid(amountNotaSaida, 'qtd_notas_operacao_dori', 0)
                companieDataToSave['qtd_notas_entradas_operacao'] = analyzeIfFieldIsValid(amountNotaEntrada, 'qtd_notas_operacao', 0)
                companieDataToSave['qtd_notas_entradas_operacao_dori'] = analyzeIfFieldIsValid(amountNotaEntrada, 'qtd_notas_operacao_dori', 0)
                companieDataToSave['qtd_notas_servicos_operacao'] = analyzeIfFieldIsValid(amountNotaServico, 'qtd_notas_operacao', 0)
                companieDataToSave['qtd_notas_servicos_operacao_dori'] = analyzeIfFieldIsValid(amountNotaServico, 'qtd_notas_operacao_dori', 0)               

                companieDataToSave['codi_emp'] = codiEmp
                companieDataToSave['cgce_matriz'] = cgceMatriz
                companieDataToSave['competence'] = f'{year}-{month:0>2}'
                
                self._collection.update_one( 
                    { 
                        "codi_emp": companieDataToSave['codi_emp'],
                        "competence": companieDataToSave['competence']
                    }, 
                    { "$set": companieDataToSave }, 
                    upsert=True 
                )

            print('')
            year += 1
コード例 #2
0
    def sumAmountPaidPerLote(self, valuesOfFile):
        amountPaidPerLote = {}
        valuesOfFileWithAmountPaid = []

        for key, currentLine in enumerate(valuesOfFile):
            previousLine = funcoesUteis.analyzeIfFieldIsValidMatrix(
                valuesOfFile, key - 1, {}, True)
            previousLine = {} if key == 0 else previousLine
            previousNumberLote = funcoesUteis.analyzeIfFieldIsValid(
                previousLine, "numberLote", 0)

            currentNumberLote = funcoesUteis.analyzeIfFieldIsValid(
                currentLine, "numberLote")
            amountPaid = funcoesUteis.analyzeIfFieldIsValid(
                currentLine, "amountPaid")

            if previousNumberLote == currentNumberLote:
                amountPaidPerLote[currentNumberLote] += amountPaid
            else:
                amountPaidPerLote[currentNumberLote] = amountPaid

        for key, data in enumerate(valuesOfFile):
            numberLote = funcoesUteis.analyzeIfFieldIsValid(data, "numberLote")

            data['amountPaidPerLote'] = round(amountPaidPerLote[numberLote], 2)
            valuesOfFileWithAmountPaid.append(data)

        return valuesOfFileWithAmountPaid
コード例 #3
0
ファイル: LivroCaixaRural.py プロジェクト: ElderVivot/baymax
    def searchIfANote(self, historic):
        positionNote = -1
        noteCorrect = ""

        if historic.find(' NUMERO') >= 0:
            positionNote = historic.find(' NUMERO') + len(' NUMERO')

        if historic.find(' CUPOM') >= 0:
            positionNote = historic.find(' CUPOM') + len(' NUMERO')

        if historic.find(' NF') >= 0:
            positionNote = historic.find(' NF') + len(' NF')

        if positionNote >= 0:
            note = historic[positionNote:].lstrip()
            noteSplitHyphen = note.split('-')
            noteSplitSpace = note.split(' ')

            noteHyphenOne = funcoesUteis.analyzeIfFieldIsValidMatrix(noteSplitHyphen, 1).strip()
            noteHyphenTwo = funcoesUteis.analyzeIfFieldIsValidMatrix(noteSplitHyphen, 2).strip()
            if noteHyphenOne == "":
                noteHyphen = noteHyphenTwo.split(' ')[0].strip()
            else:
                noteHyphen = noteHyphenOne

            noteSpace = funcoesUteis.analyzeIfFieldIsValidMatrix(noteSplitSpace, 1).strip()
            if noteSpace.find('-') >= 0:
                noteCorrect = noteHyphen
            else:
                noteCorrect = noteSpace

            noteIsNumeric = funcoesUteis.treatNumberField(noteCorrect, isInt=True)
            if noteIsNumeric > 0:
                noteCorrect == noteCorrect
            else:
                noteCorrect = ""
        
        return noteCorrect
コード例 #4
0
ファイル: Transferencia.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isProofTransferencia = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""

        for data in self._dataFile:
            if isProofTransferencia == False and data.find(
                    'COMPROVANTE DE TRANSFERENCIA') >= 0:
                isProofTransferencia = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            if fieldOne.count('IDENTIFICACAO NO EXTRATO') > 0:
                historic = funcoesUteis.treatTextField(fieldTwo)

            if fieldOne.count('CONTA DEBITADA') > 0:
                self._accountDebitOrCredit = 'DEBIT'
            elif fieldOne.count('CONTA CREDITADA') > 0:
                self._accountDebitOrCredit = 'CREDIT'

            if self._accountDebitOrCredit == 'DEBIT':
                if fieldOne.count('AGENCIA') > 0:
                    account = funcoesUteis.treatTextField(
                        funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))
                    account = str(funcoesUteis.treatNumberField(account))
                    # account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split('-'), 1))
                    # if account.find(' ') > 0:
                    #     account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split(' '), 1))
            elif self._accountDebitOrCredit == 'CREDIT':
                if fieldOne == "NOME":
                    nameProvider = fieldTwo

                if fieldOne.count("VALOR") > 0:
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

            for valueOfLineDatePayment in self._valuesOfLineDatePayment:
                if data[0:len(valueOfLineDatePayment
                              )] == valueOfLineDatePayment:
                    paymentDate = funcoesUteis.treatTextField(
                        data[len(valueOfLineDatePayment) +
                             1:len(valueOfLineDatePayment) + 11])
                    if paymentDate.find('.') >= 0:
                        paymentDate = funcoesUteis.retornaCampoComoData(
                            paymentDate.replace('.', '/'))
                    else:
                        paymentDate = funcoesUteis.retornaCampoComoData(
                            paymentDate)

                    if paymentDate is not None and amountPaid > 0 and isProofTransferencia is True:
                        valuesOfLine = {
                            "paymentDate": paymentDate,
                            "nameProvider": nameProvider,
                            "cgceProvider": '',
                            "dueDate": '',
                            "bank": 'ITAU',
                            "account": account,
                            "amountPaid": round(amountPaid, 2),
                            "historic": historic,
                            "category": 'TRANSFERENCIA',
                            "cgcePaying": '',
                            "foundProof": True,
                            "amountPaidPerLote": round(amountPaid, 2),
                            "wayFile": self._file
                        }

                        return valuesOfLine.copy()
コード例 #5
0
    def process(self, file):
        # se não for desta classe nem segue pra frente
        if self.isProof(file) is None:
            return []

        funcoesUteis.updateFilesRead(self._wayTempFilesRead,
                                     file.replace('.txt', '.pdf'),
                                     'ProofsPaymentsSantander')

        valuesOfLine = {}
        valuesOfFile = []

        dataFile = leTxt(file, treatAsText=True, removeBlankLines=True)

        nameProvider = ""
        historic = ""
        dueDate = None
        paymentDate = None
        company = ""
        cnpjProvider = ""
        amountPaid = float(0)
        amountOriginal = float(0)
        amountInterest = float(0)
        category = ""
        bank = "SANTANDER"
        account = ""

        for data in dataFile:

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))

            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            if data.find('CONTA CORRENTE:') >= 0:
                account = data[data.find('CONTA CORRENTE:') + 15:]
                account = funcoesUteis.treatTextField(account)
                accountSplit = account.split('-')
                account = f"{funcoesUteis.analyzeIfFieldIsValidMatrix(accountSplit, 1)}{funcoesUteis.analyzeIfFieldIsValidMatrix(accountSplit, 2)}"

            if data.find('BENEFICIARIO ORIGINAL') >= 0:
                self._beneficiaryOrPayer = 'BENEFICIARIO'
            elif data.count('PAGADOR ORIGINAL') > 0:
                self._beneficiaryOrPayer = 'PAGADOR'

            if self._beneficiaryOrPayer == 'PAGADOR':
                pass

            elif self._beneficiaryOrPayer == 'BENEFICIARIO':
                if fieldOne == "RAZAO SOCIAL":
                    nameProvider = fieldTwo.replace('RAZAO SOCIAL', '')

                if fieldOne == "CNPJ":
                    cnpjProvider = fieldTwo.replace('CNPJ', '')

            if fieldOne == "DATA DE VENCIMENTO":
                dueDate = funcoesUteis.transformaCampoDataParaFormatoBrasileiro(
                    funcoesUteis.retornaCampoComoData(fieldTwo))

            if fieldOne.count("VALOR NOMINAL") > 0:
                amountOriginal = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne.count("ENCARGOS") > 0:
                amountInterest = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne.count("TOTAL A COBRAR") > 0:
                amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

            if amountInterest > 0:
                amountOriginal = amountPaid - amountInterest  # é necessário fazer pois as vezes tem juros mas o valor nominal tá igual ao valor pago
            else:
                amountInterest = amountPaid - amountOriginal  # é necessário fazer  pois as vezes tem juros, mas não tem o campo encargos

            if fieldOne == "DATA DA TRANSACAO":
                paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if paymentDate is not None and amountPaid > 0:
                valuesOfLine = {
                    "paymentDate": paymentDate,
                    "nameProvider": nameProvider,
                    "cnpjProvider": cnpjProvider,
                    "dueDate": dueDate,
                    "bank": bank,
                    "account": account,
                    "amountPaid": amountPaid,
                    "amountDiscount": float(0),
                    "amountInterest": amountInterest,
                    "amountOriginal": amountOriginal,
                    "historic": historic,
                    "category": category,
                    "company": company,
                    "foundProof": True
                }

                valuesOfFile.append(valuesOfLine.copy())

                paymentDate = None
                amountPaid = float(0)

        return valuesOfFile
コード例 #6
0
ファイル: Pix.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isProofFileThisClass = False

        nameProvider = ""
        cgceProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        dueDate = None
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        paymentDate = None

        for data in self._dataFile:
            # if isProofFileThisClass == False and data.find('TIPO DE PAGAMENTO PIX') >= 0:
            #     isProofFileThisClass = True

            data = str(data)
            dataSplitTwoPoints = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(
                    dataSplitTwoPoints, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(
                    dataSplitTwoPoints, 2))

            if data.find('DADOS DO PAGADOR') >= 0:
                self._typeLineRead = 'PAGADOR'
            elif data.find('DADOS DO RECEBEDOR') >= 0:
                self._typeLineRead = 'RECEBEDOR'
            elif data.find('DADOS DA TRANSACAO') >= 0:
                self._typeLineRead = 'TRANSACAO'

            if self._typeLineRead == 'PAGADOR':
                if fieldOne.count('AGENCIA/CONTA') > 0:
                    account = funcoesUteis.analyzeIfFieldIsValidMatrix(
                        fieldTwo.split('/'), 2)
                    account = str(funcoesUteis.treatNumberField(account))

                if fieldOne.count('CPF / CNPJ') > 0:
                    cgcePaying = fieldTwo
            elif self._typeLineRead == 'RECEBEDOR':
                if fieldOne == "NOME DO RECEBEDOR":
                    nameProvider = fieldTwo

                if fieldOne.count('CPF / CNPJ') > 0:
                    cgceProvider = funcoesUteis.treatNumberField(fieldTwo)

            elif self._typeLineRead == 'TRANSACAO':
                if fieldOne == "VALOR":
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

                if fieldOne.count('DATA DA TRANSF') > 0:
                    paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if fieldOne.count('TIPO DE PAGAMENTO') > 0:
                # print(fieldOne, fieldTwo, paymentDate, amountPaid, isProofFileThisClass)
                if paymentDate is not None and amountPaid > 0:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": cgceProvider,
                        "dueDate": dueDate,
                        "bank": 'ITAU',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": 'PIX',
                        "cgcePaying": cgcePaying,
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    return valuesOfLine.copy()
コード例 #7
0
    def process(self, jsonNF):
        nf = ''
        productsXML = []
        typeNF = ''
        noteHasProducts = False

        products = readJson(jsonNF)

        if len(products) == 0:
            return ""

        for key, product in enumerate(products):
            codi_emp = product['codi_emp']

            cgce_emp = self.returnDataEmp(codi_emp)
            # ignora empresas inativas
            if cgce_emp is None:
                continue

            keyNF = product['chave_nfe']
            # ignora notas que não são NF-e
            if keyNF == "" or keyNF is None:
                continue

            emissao = product['emissao']
            emissao = funcoesUteis.retornaCampoComoData(emissao, 2)

            month = emissao.month
            year = emissao.year

            previousProduct = funcoesUteis.analyzeIfFieldIsValidMatrix(
                products, key - 1)
            previousKeyNF = funcoesUteis.analyzeIfFieldIsValid(
                previousProduct, 'chave_nfe')

            # busca os dados das notas de entradas
            if jsonNF.find('entradas_produtos') >= 0:
                typeNF = 'Entradas'
            if jsonNF.find('saidas_produtos') >= 0:
                typeNF = 'Saidas'

            if keyNF != previousKeyNF or len(products) == 1:
                wayXml = os.path.join(self._wayToReadXMLs, f'{codi_emp} -',
                                      f'{str(year)}-{month:0>2}', f'{typeNF}',
                                      f'{keyNF}.xml')
                callReadXmls = CallReadXmls(wayXml)
                nf = callReadXmls.process()

                productsXML = funcoesUteis.analyzeIfFieldIsValid(
                    nf, 'produtos')

                noteHasProducts = False if len(productsXML) == 0 else True

                # quando existe apenas um produto no XML ele não cria um array de produtos, e sim apenas um objeto. Todavia, pra função de
                # comparação funcionar preciso que seja um array. As linhas abaixo fazem esta análise e cria o array quando necessário
                productsWhenExistOneProductXML = []
                onlyProductInXML = funcoesUteis.analyzeIfFieldIsValid(
                    productsXML, 'prod', False)
                if onlyProductInXML is not False:
                    productsWhenExistOneProductXML.append(productsXML)
                    productsXML = productsWhenExistOneProductXML

            productXML = self.returnProductComparation(product, productsXML)
            if productXML is not None:
                valueComparationBetweenAccountSystemAndXML = productXML[
                    'valueComparationBetweenAccountSystemAndXML']

                # deleta o campo pois pra remover o productXML do arrays de products as informações tem que ser idênticas
                del productXML['valueComparationBetweenAccountSystemAndXML']

                # remove o produto pra ele não processar 2 vezes dizendo como seria de outro produto
                productsXML.remove(productXML)
            else:
                valueComparationBetweenAccountSystemAndXML = 0

            if valueComparationBetweenAccountSystemAndXML <= 0.3 and noteHasProducts is True:
                dataProcess = {
                    "codiEmp":
                    codi_emp,
                    "keyNF":
                    keyNF,
                    "typeNF":
                    typeNF[:3].upper(),
                    "productDominio":
                    product,
                    "productXML":
                    productXML,
                    "valueComparationBetweenAccountSystemAndXML":
                    valueComparationBetweenAccountSystemAndXML
                }

                self.saveResultProcess(dataProcess)
コード例 #8
0
ファイル: Transferencia.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isTransferencia = False

        nameProvider = ""
        cgceProvider = ''
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None
        
        for data in self._dataFile:
            if isTransferencia == False and data.find('COMPROVANTE DE TRANSF') >= 0:
                isTransferencia = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))
            fieldThree = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))

            if fieldOne.count('DO DOCUMENTO') > 0:
                self._accountDebitOrCredit = 'DEBIT'
            elif fieldOne.count('FAVORECIDO') > 0:
                self._accountDebitOrCredit = 'CREDIT'
            
            if fieldTwo.count("DATA DA TRANSF") > 0:
                paymentDate = funcoesUteis.retornaCampoComoData(fieldThree)

            if self._accountDebitOrCredit == 'DEBIT':
                if fieldOne == 'CONTA':
                    account = str(funcoesUteis.treatNumberField(fieldTwo, isInt=True))

            if fieldOne == 'NOME':
                nameProvider = fieldTwo  
            if fieldOne == 'CPF':
                cgceProvider = fieldTwo            
            if fieldOne == 'CNPJ':
                cgceProvider = fieldTwo
            if fieldOne == "VALOR":
                amountPaid = funcoesUteis.treatDecimalField(fieldTwo)
            if fieldOne.count("DATA DA TRANSF") > 0:
                paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if fieldOne == "DESCRICAO":
                if paymentDate is not None and amountPaid > 0 and isTransferencia is True:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": cgceProvider,
                        "dueDate": None,
                        "bank": 'AMAZONIA',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountFine": round(amountFine, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": 'TRANSFERENCIA',
                        "cgcePaying": "",
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    return valuesOfLine.copy()
コード例 #9
0
ファイル: DefaultSispag.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isProofDefaultSispag = False

        nameProvider = ""
        namePayee = ""
        historic = ""
        dueDate = None
        cgcePaying = ""
        cnpjProvider = ""
        amountPaid = float(0)
        category = ""
        bank = "ITAU"
        account = ""

        for data in self._dataFile:

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))

            fieldTwo = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            if fieldOne.count('COMPROVANTE DE OPERACAO') > 0:
                category = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(data.split('-'), 2))
            if fieldOne.count('PAGAMENTO COM CODIGO DE BARRAS') > 0:
                category = 'PAGTO COD BARRA'
            if fieldOne.count("PAGAMENTO DE CONCESSIONARIAS") > 0:
                category = 'PAGTO CONCESSIONARIA'
            if fieldOne.count("FGTS") > 0 or fieldOne.count("GRRF") > 0:
                category = 'PAGTO FGTS-GRRF'
            if fieldOne.count("GUIA DE RECOLHIMENTO") > 0:
                category = 'PAGTO GRF'
                historic = funcoesUteis.treatTextField(data)
            
            if fieldOne.count("IDENTIFICACAO NO EXTRATO") > 0:
                historic = fieldTwo

            if fieldOne.count('CONTA') > 0 and fieldOne.count('DEBITADA') > 0:
                self._accountDebitOrCredit = 'DEBIT'
            elif fieldOne.count('CONTA A SER CREDITADA') > 0 or fieldOne.count('DADOS DO PAGAMENTO') > 0:
                self._accountDebitOrCredit = 'CREDIT'

            if self._accountDebitOrCredit == 'DEBIT':
                if fieldOne.count('AGENCIA') > 0:
                    account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))
                    account = str(funcoesUteis.treatNumberField(account))
                    # account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split('-'), 1))
                    # if account.find(' ') > 0:
                    #     account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split(' '), 1))
            elif self._accountDebitOrCredit == 'CREDIT':
                if fieldOne == "NOME":
                    nameProvider = fieldTwo

                if fieldOne == "NOME DO FAVORECIDO":
                    nameProvider = fieldTwo
                    namePayee = nameProvider
                    
                if fieldOne == "INFORMACOES FORNECIDAS PELO PAGADOR":
                    historic = fieldTwo
                
                if fieldOne == "DATA DE VENCIMENTO":
                    dueDate = funcoesUteis.transformaCampoDataParaFormatoBrasileiro(funcoesUteis.retornaCampoComoData(fieldTwo))

                if ( fieldOne.count("CPF") > 0 or fieldOne.count("CNPJ") > 0 ) and fieldOne.count("PAGADOR") > 0:
                    cgcePaying = funcoesUteis.treatNumberField(fieldTwo)

                if ( fieldOne.count("CPF") > 0 or fieldOne.count("CNPJ") > 0 ) and fieldOne.count("PAGADOR") == 0:
                    cnpjProvider = funcoesUteis.treatNumberField(fieldTwo)

                if fieldOne.count("VALOR") > 0:
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

			# quando é pagamento de imposto não tem o nome do fornecedor, o dados vem na informação complementar
            if historic != "" and dueDate == "" and namePayee == "":
                nameProvider = historic

            # se o nome do fornecedor ainda for vazio, então considero a categoria como fornecedor
            if nameProvider == "" and category != "":
                nameProvider = category

            for valueOfLineDatePayment in self._valuesOfLineDatePayment:
                if data[0 : len(valueOfLineDatePayment) ] == valueOfLineDatePayment:
                    paymentDate = funcoesUteis.treatTextField(data[len(valueOfLineDatePayment)+1:len(valueOfLineDatePayment)+11])
                    paymentDate = funcoesUteis.retornaCampoComoData(paymentDate.replace('.', '/'))

                    if paymentDate is not None and amountPaid > 0:
                        valuesOfLine = {
                            "paymentDate": paymentDate,
                            "nameProvider": nameProvider,
                            "cgceProvider": cnpjProvider,
                            "dueDate": dueDate,
                            "bank": bank,
                            "account": account,
                            "amountPaid": round(amountPaid, 2),
                            "historic": historic,
                            "category": category,
                            "cgcePaying": cgcePaying,
                            "foundProof": True,
                            "amountPaidPerLote": round(amountPaid, 2),
                            "wayFile": self._file
                        }

                        return valuesOfLine.copy()
コード例 #10
0
ファイル: Agendamento.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isProofAgendamento = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None

        for data in self._dataFile:
            if isProofAgendamento == False and data.find(
                    'COMPROVANTE DE AGENDAMENTO') >= 0:
                isProofAgendamento = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            # faço esta separação pra poder identificar o que deve ser lido, pois os dados estão na linha abaixo e não onde 'BENEFICIARIO' por exemplo
            if fieldOne.count('CONTA A SER DEBITADA') > 0:
                self._typeLineRead = 'conta_debitada'
            elif fieldOne.count('DADOS DO PAGAMENTO') > 0:
                self._typeLineRead = 'dados_pagamento'
            elif fieldOne.count('DADOS DO BENEFICIARIO') > 0:
                self._typeLineRead = 'beneficiario'
            elif fieldOne.count('DADOS DO PAGADOR') > 0:
                self._typeLineRead = 'pagador'
            elif fieldOne.count('DADOS DO BOLETO') > 0:
                self._typeLineRead = 'dados_boleto'

            if self._typeLineRead == "conta_debitada":
                if fieldOne.count('AGENCIA') > 0:
                    account = funcoesUteis.treatTextField(
                        funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))
                    account = str(funcoesUteis.treatNumberField(account))
                    # account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split('-'), 1))
                    # if account.find(' ') > 0:
                    #     account = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split(' '), 1))
            if self._typeLineRead == 'beneficiario':
                if fieldOne == "NOME":
                    nameProvider = fieldTwo
                if fieldOne == "RAZAO SOCIAL":
                    nameProvider = fieldTwo
                if fieldOne.count('CNPJ') > 0 or fieldOne.count('CPF') > 0:
                    cgceProvider = funcoesUteis.treatNumberField(fieldTwo)
            if self._typeLineRead == 'pagador':
                if fieldOne.count('CNPJ') > 0 or fieldOne.count('CPF') > 0:
                    cgcePaying = funcoesUteis.treatNumberField(fieldTwo)
            elif self._typeLineRead == 'dados_boleto':
                if fieldOne == "DATA DE VENCIMENTO":
                    dueDate = funcoesUteis.retornaCampoComoData(fieldTwo)
                if fieldOne == "DATA DO PAGAMENTO":
                    paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)
                if fieldOne == "VALOR DO DOCUMENTO":
                    amountOriginal = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "DESCONTO":
                    amountDiscount = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "JUROS/MORA":
                    amountInterest = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "MULTA":
                    amountFine = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "VALOR DO PAGAMENTO":
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

            for valueOfLineDatePayment in self._valuesOfLineDatePayment:
                if data[0:len(valueOfLineDatePayment
                              )] == valueOfLineDatePayment:
                    if paymentDate is None:  # apenas se for None, pq o de agendamento tem um campo especifico pra data
                        paymentDate = funcoesUteis.treatTextField(
                            data[len(valueOfLineDatePayment) +
                                 1:len(valueOfLineDatePayment) + 11])
                        if paymentDate.find('.') >= 0:
                            paymentDate = funcoesUteis.retornaCampoComoData(
                                paymentDate.replace('.', '/'))
                        else:
                            paymentDate = funcoesUteis.retornaCampoComoData(
                                paymentDate)

                    if paymentDate is not None and amountPaid > 0 and isProofAgendamento is True:
                        valuesOfLine = {
                            "paymentDate": paymentDate,
                            "nameProvider": nameProvider,
                            "cgceProvider": cgceProvider,
                            "dueDate": dueDate,
                            "bank": 'ITAU',
                            "account": account,
                            "amountPaid": round(amountPaid, 2),
                            "amountInterest": round(amountInterest, 2),
                            "amountDiscount": round(amountDiscount, 2),
                            "amountFine": round(amountFine, 2),
                            "amountOriginal": round(amountOriginal, 2),
                            "historic": historic,
                            "category": 'AGENDAMENTO',
                            "cgcePaying": cgcePaying,
                            "foundProof": True,
                            "amountPaidPerLote": round(amountPaid, 2),
                            "wayFile": self._file
                        }

                        return valuesOfLine.copy()
コード例 #11
0
    def process(self):
        valuesOfFile = []
        valuesOfLine = {}

        isPagamento = False

        cgceProvider = ''
        cgcePaying = ''
        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None
        dueDate = None
        countQtdDataNecessaryToProofIsValid = 0
        
        for data in self._dataFile:
            if data.find('COMPROVANTE DE TRANSACAO BANCARIA') >= 0:
                countQtdDataNecessaryToProofIsValid = 0
                countQtdDataNecessaryToProofIsValid += 1

            if data.find('TRANSACAO ACIMA FOI REALIZADA') >= 0:
                countQtdDataNecessaryToProofIsValid += 1
                
            if countQtdDataNecessaryToProofIsValid >= 2:
                isPagamento = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))
            # fieldThree = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))
            
            if fieldOne == 'CONTA DE DEBITO':
                account = funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 4)
                account = account.split('|')
                account = funcoesUteis.analyzeIfFieldIsValidMatrix(account, 1)
                account = account.split('-')
                account = funcoesUteis.treatNumberFieldInVector(account, 1, isInt=True)
                account = str(account)

            if data.count('RAZAO SOCIAL') > 0 and data.count('SACADOR') == 0:
                positionRazaoSocial = data.find('RAZAO SOCIAL') + len('RAZAO SOCIAL')
                nameProvider = funcoesUteis.treatTextField(data[positionRazaoSocial:])

            if fieldOne.count('CNPJ') > 0 and fieldOne.count("BENEFICIARIO") > 0:
                cgceProvider = fieldTwo

            if fieldOne.count('CNPJ') > 0 and fieldOne.count("PAGADOR") > 0:
                cgcePaying = fieldTwo

            if fieldOne == "DATA DE DEBITO":
                paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if fieldOne == "DATA DE VENCIMENTO":
                dueDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if fieldOne == "VALOR":
                amountOriginal = funcoesUteis.treatDecimalField(fieldTwo, decimalSeparator='.')

            if fieldOne.count('DESCONTO') > 0:
                amountDiscount = funcoesUteis.treatDecimalField(fieldTwo, decimalSeparator='.')

            if fieldOne.count('MULTA') > 0:
                amountFine = funcoesUteis.treatDecimalField(fieldTwo, decimalSeparator='.')

            if fieldOne.count('JUROS') > 0:
                amountInterest = funcoesUteis.treatDecimalField(fieldTwo, decimalSeparator='.')

            if fieldOne == "VALOR TOTAL":
                amountPaid = funcoesUteis.treatDecimalField(fieldTwo, decimalSeparator='.')

            if fieldOne == "DESCRICAO":
                historic = funcoesUteis.treatDecimalField(fieldTwo)            

            if data.find('TRANSACAO ACIMA FOI REALIZADA') >= 0:
                if paymentDate is not None and amountPaid > 0 and isPagamento is True:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": cgceProvider,
                        "dueDate": dueDate,
                        "bank": 'BRADESCO',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountFine": round(amountFine, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": '',
                        "cgcePaying": cgcePaying,
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    valuesOfFile.append(valuesOfLine.copy())

        return valuesOfFile
コード例 #12
0
    def process(self):
        valuesOfLine = {}

        isProofPagamentoBoleto = False

        nameProvider = ""
        cgceProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        dueDate = None
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)

        for data in self._dataFile:
            if isProofPagamentoBoleto == False and data.find(
                    'PAGAMENTO DE BOLETO') >= 0:
                isProofPagamentoBoleto = True

            data = str(data)
            dataSplitTwoPoints = data.split(':')
            dataSplitSpace = data.split(' ')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(
                    dataSplitTwoPoints, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(
                    dataSplitTwoPoints, 2))

            if fieldOne.count('AGENCIA/CONTA') > 0:
                account = funcoesUteis.analyzeIfFieldIsValidMatrix(
                    fieldTwo.split('/'), 2)
                account = str(funcoesUteis.treatNumberField(account))
                # account = str(funcoesUteis.treatNumberField(funcoesUteis.analyzeIfFieldIsValidMatrix(account.split('-'), 1), isInt=True))

                cgcePaying = funcoesUteis.treatNumberField(
                    funcoesUteis.analyzeIfFieldIsValidMatrix(
                        dataSplitTwoPoints, 3))

            # faço esta separação pra poder identificar o que deve ser lido, pois os dados estão na linha abaixo e não onde 'BENEFICIARIO' por exemplo
            if fieldOne == 'BENEFICIARIO':
                self._typeLineRead = 'beneficiario'
            elif fieldOne.count('VALOR DO BOLETO') > 0 or fieldOne.count(
                    'VALOR DO DOCUMENTO') > 0:
                self._typeLineRead = 'valor_boleto'
            elif fieldOne.count('DESCONTO') > 0 and fieldOne.count('(-)') > 0:
                self._typeLineRead = 'desconto'
            elif fieldOne.count('MORA/MULTA') > 0 and fieldOne.count(
                    '(+)') > 0:
                self._typeLineRead = 'juros'
            if data.count('VALOR DO PAGAMENTO') > 0 and data.count('R$') > 0:
                self._typeLineRead = 'valor_pago'
            elif data.count('DATA DE PAGAMENTO') > 0:
                self._typeLineRead = 'data_pagamento'

            # dados da linha do BENEFICIARIO
            if self._typeLineRead == 'beneficiario' and fieldOne.count(
                    'BENEFICIARIO') == 0:
                # alguns comprovantes de boleto tem a RAZAO SOCIAL e CNPJ também
                if (fieldOne == "RAZAO SOCIAL"):
                    nameProvider = ' '.join(
                        dataSplitSpace[2:len(dataSplitSpace) - 2])
                    cgceProvider = funcoesUteis.treatNumberField(
                        dataSplitSpace[len(dataSplitSpace) - 2])
                else:
                    nameProvider = ' '.join(
                        dataSplitSpace[:len(dataSplitSpace) - 1])

                nameProvider = nameProvider.strip()
                dueDate = funcoesUteis.retornaCampoComoData(
                    dataSplitSpace[len(dataSplitSpace) - 1])
            # dados da linha do VALOR ORIGINAL DO BOLETO
            elif self._typeLineRead == 'valor_boleto' and fieldOne.count(
                    'VALOR DO BOLETO') == 0 and fieldOne.count(
                        'VALOR DO DOCUMENTO') == 0:
                amountOriginal = funcoesUteis.treatDecimalField(
                    dataSplitSpace[len(dataSplitSpace) - 1])
            # dados da linha do VALOR DESCONTO
            elif self._typeLineRead == 'desconto' and fieldOne.count(
                    'DESCONTO') == 0:
                amountDiscount = funcoesUteis.treatDecimalField(
                    dataSplitSpace[len(dataSplitSpace) - 1])
            # dados da linha do VALOR MORA/MULTA
            elif self._typeLineRead == 'juros' and fieldOne.count(
                    'MORA/MULTA') == 0:
                amountInterest = funcoesUteis.treatDecimalField(
                    dataSplitSpace[len(dataSplitSpace) - 1])
            # dados da linha do VALOR MORA/MULTA
            elif self._typeLineRead == 'valor_pago' and data.count(
                    'VALOR DO PAGAMENTO') == 0 and data.count('R$') == 0:
                amountPaid = funcoesUteis.treatDecimalField(
                    dataSplitSpace[len(dataSplitSpace) - 1])

            for valueOfLineDatePayment in self._valuesOfLineDatePayment:
                if data[0:len(valueOfLineDatePayment
                              )] == valueOfLineDatePayment:
                    paymentDate = funcoesUteis.treatTextField(
                        data[len(valueOfLineDatePayment) +
                             1:len(valueOfLineDatePayment) + 11])
                    if paymentDate.find('.') >= 0:
                        paymentDate = funcoesUteis.retornaCampoComoData(
                            paymentDate.replace('.', '/'))
                    else:
                        paymentDate = funcoesUteis.retornaCampoComoData(
                            paymentDate)

                    if paymentDate is not None and amountPaid > 0 and isProofPagamentoBoleto is True:
                        valuesOfLine = {
                            "paymentDate": paymentDate,
                            "nameProvider": nameProvider,
                            "cgceProvider": cgceProvider,
                            "dueDate": dueDate,
                            "bank": 'ITAU',
                            "account": account,
                            "amountPaid": round(amountPaid, 2),
                            "amountInterest": round(amountInterest, 2),
                            "amountDiscount": round(amountDiscount, 2),
                            "amountOriginal": round(amountOriginal, 2),
                            "historic": historic,
                            "category": 'PAGTO DE BOLETO',
                            "cgcePaying": cgcePaying,
                            "foundProof": True,
                            "amountPaidPerLote": round(amountPaid, 2),
                            "wayFile": self._file
                        }

                        return valuesOfLine.copy()
コード例 #13
0
ファイル: Darf.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isDarf = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None

        for data in self._dataFile:
            if isDarf == False and data.find('PAGAMENTO') >= 0 and (
                    data.find('DARF') >= 0
                    or data.find('SIMPLES NACIONAL') >= 0):
                isDarf = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            if fieldOne.count('CONTA DEBITADA') > 0:
                self._accountDebitOrCredit = 'DEBIT'
            elif fieldOne.count('AGENTE ARRECADADOR') > 0:
                self._accountDebitOrCredit = 'CREDIT'

            if self._accountDebitOrCredit == 'DEBIT':
                # if fieldOne.count('AGENCIA/CONTA') > 0:
                #     account = fieldTwo.split()
                #     account = funcoesUteis.analyzeIfFieldIsValidMatrix(account, 2)
                #     account = str(funcoesUteis.treatNumberField(account))
                if fieldOne.count('AGENCIA') > 0 and fieldOne.count(
                        'CONTA') > 0:
                    account = fieldTwo.split('/')
                    account = funcoesUteis.analyzeIfFieldIsValidMatrix(
                        account, 2)
                    account = str(
                        funcoesUteis.treatNumberField(account, isInt=True))
            elif self._accountDebitOrCredit == 'CREDIT':
                if fieldOne == "DATA DO PAGAMENTO":
                    paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)
                if fieldOne == "VALOR PRINCIPAL":
                    amountOriginal = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "DESCONTO":
                    amountDiscount = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "VALOR DOS JUROS/ENCARGOS":
                    amountInterest = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "VALOR DA MULTA":
                    amountFine = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "VALOR TOTAL":
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne.count('CPF OU CNPJ') > 0:
                    nameProvider = f"DARF - {fieldTwo}"
                if nameProvider == "":
                    nameProvider = "SIMPLES NACIONAL"

            if fieldOne.count('AGENCIA') > 0 and fieldOne.count('CONTA') > 0:
                if paymentDate is not None and amountPaid > 0 and isDarf is True:
                    valuesOfLine = {
                        "paymentDate":
                        paymentDate,
                        "nameProvider":
                        nameProvider,
                        "cgceProvider":
                        "",
                        "dueDate":
                        None,
                        "bank":
                        'ITAU',
                        "account":
                        account,
                        "amountPaid":
                        round(amountPaid, 2),
                        "amountInterest":
                        round(amountInterest, 2),
                        "amountDiscount":
                        round(amountDiscount, 2),
                        "amountFine":
                        round(amountFine, 2),
                        "amountOriginal":
                        round(amountOriginal, 2),
                        "historic":
                        historic,
                        "category":
                        'DARF' if nameProvider != "SIMPLES NACIONAL" else
                        nameProvider,
                        "cgcePaying":
                        "",
                        "foundProof":
                        True,
                        "amountPaidPerLote":
                        round(amountPaid, 2),
                        "wayFile":
                        self._file
                    }

                    return valuesOfLine.copy()
コード例 #14
0
ファイル: Pagamento.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfFile = []
        valuesOfLine = {}

        isPagamento = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None
        dueDate = None
        countQtdDataNecessaryToProofIsValid = 0

        for data in self._dataFile:
            # print(data)
            if data.find('SICOOB - SISTEMA DE COOPERATIVAS') >= 0:
                countQtdDataNecessaryToProofIsValid = 0
                countQtdDataNecessaryToProofIsValid += 1

            if data.find('PAGAMENTO DE TITULO') >= 0:
                countQtdDataNecessaryToProofIsValid += 1

            if countQtdDataNecessaryToProofIsValid >= 2:
                isPagamento = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))
            # fieldThree = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))

            if fieldOne == 'CONTA':
                account = funcoesUteis.treatNumberField(fieldTwo.split('/')[0])

            if fieldOne.count('NOME') > 0 and fieldOne.count(
                    "BENEFICIARIO") > 0:
                nameProvider = fieldTwo

            if fieldOne.count('CNPJ') > 0 and fieldOne.count(
                    "BENEFICIARIO") > 0:
                cgceProvider = fieldTwo

            if fieldOne.count('CNPJ') > 0 and fieldOne.count("PAGADOR") > 0:
                cgcePaying = fieldTwo

            if fieldOne == "DATA PAGAMENTO":
                paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if fieldOne == "DATA VENCIMENTO":
                dueDate = funcoesUteis.retornaCampoComoData(fieldTwo)

            if fieldOne == "VALOR DOCUMENTO":
                amountOriginal = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne.count('DESCONTO') > 0 and fieldOne.count(
                    "ABATIMENTO") > 0:
                amountDiscount = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne.count('OUTROS ACRESCIMOS') > 0:
                amountInterest = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne == "VALOR PAGO":
                amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne == "VALOR PAGO":
                if paymentDate is not None and amountPaid > 0 and isPagamento is True:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": cgceProvider,
                        "dueDate": dueDate,
                        "bank": 'SICOOB',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountFine": round(amountFine, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": '',
                        "cgcePaying": cgcePaying,
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    valuesOfFile.append(valuesOfLine.copy())

        return valuesOfFile
コード例 #15
0
ファイル: Fgts.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isFgts = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None

        for data in self._dataFile:
            if isFgts == False and data.find(
                    'RECOLHIMENTO') >= 0 and data.find('FGTS') >= 0:
                isFgts = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            if fieldOne.count('AGENCIA') > 0 and fieldOne.count('CONTA') > 0:
                account = fieldTwo.split('/')
                account = funcoesUteis.analyzeIfFieldIsValidMatrix(account, 2)
                account = str(funcoesUteis.treatNumberField(account))
            if fieldOne == "PAGAMENTO EFETUADO EM":
                paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)
            if fieldOne == "VALOR RECOLHIDO":
                amountPaid = funcoesUteis.treatDecimalField(fieldTwo)
            if fieldOne.count('DESCRICAO DO PAGAMENTO') > 0:
                nameProvider = f"RECOLHIMENTO FGTS - {fieldTwo}"

            if paymentDate is not None and amountPaid > 0 and isFgts is True:
                valuesOfLine = {
                    "paymentDate": paymentDate,
                    "nameProvider": nameProvider,
                    "cgceProvider": "",
                    "dueDate": None,
                    "bank": 'ITAU',
                    "account": account,
                    "amountPaid": round(amountPaid, 2),
                    "amountInterest": round(amountInterest, 2),
                    "amountDiscount": round(amountDiscount, 2),
                    "amountFine": round(amountFine, 2),
                    "amountOriginal": round(amountOriginal, 2),
                    "historic": historic,
                    "category": 'FGTS - RECOLHEIMENTO',
                    "cgcePaying": "",
                    "foundProof": True,
                    "amountPaidPerLote": round(amountPaid, 2),
                    "wayFile": self._file
                }

                return valuesOfLine.copy()
コード例 #16
0
ファイル: PagamentoInss.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isPagamentoInss = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None
        dueDate = None

        for data in self._dataFile:
            if isPagamentoInss == False and data.find(
                    'COMPROVANTE DE PAGAMENTO') >= 0 and (data.find('INSS') or
                                                          data.find('DARF')):
                isPagamentoInss = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))
            fieldThree = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))

            if fieldOne.count('DO DOCUMENTO') > 0 and fieldTwo.count(
                    "DATA") > 0:
                paymentDate = funcoesUteis.retornaCampoComoData(fieldThree)

            if fieldOne == 'CONTA':
                account = str(
                    funcoesUteis.treatNumberField(fieldTwo, isInt=True))

            if fieldOne.count('MULTA') > 0 or fieldOne.count('JUROS') > 0:
                amountInterest = funcoesUteis.treatDecimalField(fieldTwo)
            if fieldOne == "VALOR TOTAL":
                amountPaid = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne == 'DESCRICAO':
                nameProvider = fieldTwo

            if fieldOne == "DESCRICAO":
                if paymentDate is not None and amountPaid > 0 and isPagamentoInss is True:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": "",
                        "dueDate": dueDate,
                        "bank": 'AMAZONIA',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountFine": round(amountFine, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": 'PAGAMENTO',
                        "cgcePaying": "",
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    return valuesOfLine.copy()
コード例 #17
0
ファイル: Pagamento.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isPagamento = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None
        dueDate = None

        for data in self._dataFile:
            if isPagamento == False and data.find(
                    'COMPROVANTE DE PAGAMENTO') >= 0:
                isPagamento = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))
            fieldThree = funcoesUteis.treatTextField(
                funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 3))

            if fieldOne.count('DO DOCUMENTO') > 0 and fieldTwo.count(
                    "DATA") > 0:
                paymentDate = funcoesUteis.retornaCampoComoData(fieldThree)

            if fieldOne == 'CONTA':
                account = str(
                    funcoesUteis.treatNumberField(fieldTwo, isInt=True))

            if fieldOne.count('BENEFICIARIO') > 0:
                self._accountDebitOrCredit = 'DEBIT'
            elif fieldOne.count('PAGADOR') > 0:
                self._accountDebitOrCredit = 'CREDIT'
            elif fieldOne.count('SACADOR') > 0:
                self._accountDebitOrCredit = ''

            if self._accountDebitOrCredit == 'DEBIT':
                if fieldOne == 'RAZAO SOCIAL':
                    nameProvider = fieldTwo
                if fieldOne == 'CNPJ/CPF':
                    cgceProvider = fieldTwo

            elif self._accountDebitOrCredit == 'CREDIT':
                if fieldOne == "DATA DO PAGAMENTO":
                    paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)
                if fieldOne == "DATA DE VENCIMENTO":
                    dueDate = funcoesUteis.retornaCampoComoData(fieldTwo)
                if fieldOne == "VALOR NOMINAL":
                    amountOriginal = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == 'ENCARGOS':
                    amountInterest = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "VALOR PAGO":
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "DESCONTO":
                    amountDiscount = funcoesUteis.treatDecimalField(fieldTwo)

            if fieldOne == "VALOR PAGO":
                if paymentDate is not None and amountPaid > 0 and isPagamento is True:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": cgceProvider,
                        "dueDate": dueDate,
                        "bank": 'AMAZONIA',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountFine": round(amountFine, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": 'PAGAMENTO',
                        "cgcePaying": "",
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    return valuesOfLine.copy()
コード例 #18
0
ファイル: Gps.py プロジェクト: ElderVivot/baymax
    def process(self):
        valuesOfLine = {}

        isDarf = False

        nameProvider = ""
        historic = ""
        amountPaid = float(0)
        account = ""
        amountOriginal = float(0)
        amountDiscount = float(0)
        amountInterest = float(0)
        amountFine = float(0)
        paymentDate = None
        
        for data in self._dataFile:
            if isDarf == False and data.find('PAGAMENTO DE GPS') >= 0:
                isDarf = True

            data = str(data)
            dataSplit = data.split(':')

            fieldOne = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 1))
            fieldTwo = funcoesUteis.treatTextField(funcoesUteis.analyzeIfFieldIsValidMatrix(dataSplit, 2))

            if fieldOne.count('CONTA DEBITADA') > 0:
                self._accountDebitOrCredit = 'DEBIT'
            elif fieldOne.count('AGENTE ARRECADADOR') > 0:
                self._accountDebitOrCredit = 'CREDIT'

            if self._accountDebitOrCredit == 'DEBIT':
                if fieldOne.count('AGENCIA') > 0 and fieldOne.count('CONTA') > 0:
                    account = fieldTwo.split('/')
                    account = funcoesUteis.analyzeIfFieldIsValidMatrix(account, 2)
                    account = str(funcoesUteis.treatNumberField(account, isInt=True))
            elif self._accountDebitOrCredit == 'CREDIT':
                if fieldOne == "DATA DO PAGAMENTO":
                    paymentDate = funcoesUteis.retornaCampoComoData(fieldTwo)
                if fieldOne.count("MON/JUR/MUL") > 0:
                    amountInterest = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "VALOR TOTAL":
                    amountPaid = funcoesUteis.treatDecimalField(fieldTwo)
                if fieldOne == "CODIGO DE PAGAMENTO":
                    nameProvider = f"GPS - {fieldTwo}"
                if fieldOne.count('IDENTIFICADOR') > 0:
                    cgceProvider = fieldTwo

            if fieldOne == "AGENCIA" or ( fieldOne.count('AGENCIA') > 0 and fieldOne.count('CONTA') > 0 ):
                if paymentDate is not None and amountPaid > 0 and isDarf is True:
                    valuesOfLine = {
                        "paymentDate": paymentDate,
                        "nameProvider": nameProvider,
                        "cgceProvider": cgceProvider,
                        "dueDate": None,
                        "bank": 'ITAU',
                        "account": account,
                        "amountPaid": round(amountPaid, 2),
                        "amountInterest": round(amountInterest, 2),
                        "amountDiscount": round(amountDiscount, 2),
                        "amountFine": round(amountFine, 2),
                        "amountOriginal": round(amountOriginal, 2),
                        "historic": historic,
                        "category": 'DARF',
                        "cgcePaying": "",
                        "foundProof": True,
                        "amountPaidPerLote": round(amountPaid, 2),
                        "wayFile": self._file
                    }

                    return valuesOfLine.copy()