diff --git a/delimiters.txt b/delimiters.txt index 4f81911..f441e00 100644 --- a/delimiters.txt +++ b/delimiters.txt @@ -1,11 +1,11 @@ 14.07.2024NAZO SUSHI BAR BRASILIA BR 446,22 0,00 -01-11 DATE -12-34 DESC -35-48 CITY -49-50 COUNTRY -51-70 DEBT -71-82 CREDIT +01-11 (10) DATE +12-34 (23) DESC +35-48 (14) CITY +49-50 (02) COUNTRY +51-70 (20) DEBT +71-82 (12) CREDIT (\d{2}\.\d{2}\.\d{4})(.{23})(.{14})(.{2})(\s*\d+,\d{2})(\s*\d+,\d{2}) \d{2}\.\d{2}\.\d{4}.{23}.{14}.{2}\s*\d+,\d{2}\s*\d+,\d{2} \ No newline at end of file diff --git a/design-notes.txt b/design-notes.txt new file mode 100644 index 0000000..ba55855 --- /dev/null +++ b/design-notes.txt @@ -0,0 +1,20 @@ +--- +installments notes + +transaction is: thingie (01/10) +so +create transactions as: +thingie(**/10) until thingie (10/10) +if transaction starts at: (03/10) +then it should: +thingie(03/10) to thingie (10/10) +on creation, change installments transactions dates to match credit card invoice month. +so +(15/03) thingie (03/10) +(15/04) thingie (04/10) +and so on + +should we control wether it's paid or not? +probably not as the idea is to have no manual conciliation of transactions + +should we control initial installment, and last separately? diff --git a/pdfScrape.ipynb b/pdfScrape.ipynb index 9c4f09b..5ac7609 100644 --- a/pdfScrape.ipynb +++ b/pdfScrape.ipynb @@ -104,9 +104,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lines under TABLEA:\n", + "UNGA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "DATA\n", + "\n", + "Lines under TABLEB:\n", + "BUNGA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n", + "DELTA\n" + ] + } + ], "source": [ "# Open the text file\n", "with open('table-test.txt', 'r') as file:\n", @@ -148,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -156,9 +186,115 @@ "output_type": "stream", "text": [ "found Dan\n", + "dan 15.07.2024NEW EMPAR EMPREENDIMENTCORUMBA DE GO BR 10,00 0,00\n", + "dan 14.07.2024NAZO SUSHI BAR BRASILIA BR 446,22 0,00\n", + "dan 18.07.2024IFD*IFOOD.COM AGENCIA DOsasco BR 12,90 0,00\n", + "dan 19.07.2024IFD*RC MELO COMERCIO D BRASILIA BR 138,30 0,00\n", + "dan 21.07.2024GRUPO FARTURA DE HORTI BRASILIA BR 105,79 0,00\n", + "dan 20.07.2024IFD*JL COMERCIO VAREJISBRASILIA BR 134,70 0,00\n", + "dan 22.07.2024MURAKAMI BRASILIA BR 55,90 0,00\n", + "dan 22.07.2024ZP *CANTINAGOODLANCHEV Brasilia BR 8,40 0,00\n", + "dan 23.07.2024CANTINA E CIA BRASILIA BR 10,00 0,00\n", + "dan 25.07.2024CANTINA E CIA BRASILIA BR 3,50 0,00\n", + "dan 24.07.2024IFD*NFE COMERCIO DE ALIBRASILIA BR 101,89 0,00\n", + "dan 27.07.2024BENITA PANINOTECA BRASILIA BR 156,80 0,00\n", + "dan 26.07.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 123,99 0,00\n", + "dan 04.08.2024IFD*RC MELO COMERCIO DEBRASILIA BR 103,29 0,00\n", + "dan 06.08.2024CANTINA E CIA BRASILIA BR 6,00 0,00\n", + "dan 06.08.2024ZP *CANTINAGOODLANCHEV Brasilia BR 210,00 0,00\n", + "dan 07.08.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 232,99 0,00\n", + "dan 22.07.2024DROGASIL 2067 BRASILIA BR 204,99 0,00\n", + "dan 22.07.2024REDE BRASIL DRUGSTORE BRASILIA BR 26,74 0,00\n", + "dan 10.08.2024PAGUE MENOS 1225 BRASILIA BR 406,30 0,00\n", + "dan 13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 14,00 0,00\n", + "dan 13.07.2024MR JOHN BARBEARIA LTDA BRASILIA BR 60,00 0,00\n", + "dan 18.07.2024NETFLIX.COM SAO PAULO BR 44,90 0,00\n", + "dan 19.07.2024PAG*FolhaDeSPaulo SAO PAULO BR 29,90 0,00\n", + "dan 19.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\n", + "dan 22.07.2024APPLE.COM/BILL SAO PAULO BR 97,90 0,00\n", + "dan 22.07.2024MERCADOLIVRE*MERCADOLIVOSASCO BR 444,40 0,00\n", + "dan 25.07.2024MP*5PRODUTOS OSASCO BR 308,93 0,00\n", + "dan 25.07.2024MERCADOLIVRE*SABORESDAMOSASCO BR 258,00 0,00\n", + "dan 27.07.2024MP*MELIMAIS OSASCO BR 17,99 0,00\n", + "dan 27.07.2024Wellhub Gympass BR GympSao Paulo BR 399,90 0,00\n", + "dan 26.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\n", + "dan 29.07.2024MG LAVA JATO BRASILIA BR 100,00 0,00\n", + "dan 29.07.2024MERCADOLIVRE*GLDECOR OSASCO BR 50,75 0,00\n", + "dan 01.08.2024MR JOHN BARBEARIA LTDA BRASILIA BR 54,00 0,00\n", + "dan 04.08.2024APPLE.COM/BILL SAO PAULO BR 54,90 0,00\n", + "dan 04.08.2024IFD*SCORPIONS EXPRESS Osasco BR 10,00 0,00\n", + "dan 08.08.2024CASCOL COMBUSTIVEIS BRASILIA BR 239,37 0,00\n", + "dan 07.08.2024IFD*GRAN LOG EXPRESS Osasco BR 10,00 0,00\n", + "dan 09.08.2024SUPERAUTOR C*Supe NITEROI BR 247,86 0,00\n", + "dan 09.08.2024UBER* TRIP WWW.UBER.COM. BR 30,89 0,00\n", + "dan 09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 10,00 0,00\n", + "dan 09.08.2024UBER * PENDING SAO PAULO BR 27,93 0,00\n", + "dan 09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 5,00 0,00\n", + "dan 15.07.2024VELOE BARUERI BR 22,26 0,00\n", + "dan 19.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 179,21 0,00\n", + "dan 13.07.2024DL*GOOGLE YouTub SAO PAULO BR 41,90 0,00\n", + "dan 16.07.2024STEAMGAMES.COM 42595229912-1844160 WA 24,00 0,00\n", + "dan 16.07.2024IOF - COMPRA NO EXTERIOR 0,26 0,00\n", + "dan 16.07.2024STEAM PURCHASE SEATTLE DE 127,19 0,00\n", + "dan 18.07.2024IOF - COMPRA NO EXTERIOR 1,39 0,00\n", + "dan 22.07.2024PAG*XsollaGames Sao Paulo BR 26,99 0,00\n", + "dan 11.04.2024PRODUTOS GLOB PARC 04/12 RIO DE JANEIBR 44,90 0,00\n", + "dan 15.01.2024MP*MUNDODOSCO PARC 07/10 SAO PAULO BR 159,90 0,00\n", + "dan 17.05.2024PAG*Folhadesp PARC 03/06 Sao Paulo BR 109,60 0,00\n", + "dan 17.10.2023BIANCHINI AUT PARC 10/10 BRASILIA BR 535,00 0,00\n", + "dan 27.05.2024PARC=112 BRAS PARC 03/12 BRASILIA BR 452,00 0,00\n", "found Iza\n", - "Lines under list_dan:\n", - "[('2024-07-15', 'NEW EMPAR EMPREENDIMENT', 'CORUMBA DE GO ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-14', 'NAZO SUSHI BAR ', 'BRASILIA ', 'BR', Decimal('44622'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-18', 'IFD*IFOOD.COM AGENCIA D', 'Osasco ', 'BR', Decimal('1290'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-19', 'IFD*RC MELO COMERCIO D ', 'BRASILIA ', 'BR', Decimal('13830'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-21', 'GRUPO FARTURA DE HORTI ', 'BRASILIA ', 'BR', Decimal('10579'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-20', 'IFD*JL COMERCIO VAREJIS', 'BRASILIA ', 'BR', Decimal('13470'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-22', 'MURAKAMI ', 'BRASILIA ', 'BR', Decimal('5590'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-22', 'ZP *CANTINAGOODLANCHEV ', 'Brasilia ', 'BR', Decimal('840'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-23', 'CANTINA E CIA ', 'BRASILIA ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-25', 'CANTINA E CIA ', 'BRASILIA ', 'BR', Decimal('350'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-24', 'IFD*NFE COMERCIO DE ALI', 'BRASILIA ', 'BR', Decimal('10189'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-27', 'BENITA PANINOTECA ', 'BRASILIA ', 'BR', Decimal('15680'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-26', 'IFD*BSQUARE PIZZA BURGE', 'BRASILIA ', 'BR', Decimal('12399'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-04', 'IFD*RC MELO COMERCIO DE', 'BRASILIA ', 'BR', Decimal('10329'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-06', 'CANTINA E CIA ', 'BRASILIA ', 'BR', Decimal('600'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-06', 'ZP *CANTINAGOODLANCHEV ', 'Brasilia ', 'BR', Decimal('21000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-07', 'IFD*BSQUARE PIZZA BURGE', 'BRASILIA ', 'BR', Decimal('23299'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-22', 'DROGASIL 2067 ', 'BRASILIA ', 'BR', Decimal('20499'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-22', 'REDE BRASIL DRUGSTORE ', 'BRASILIA ', 'BR', Decimal('2674'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-10', 'PAGUE MENOS 1225 ', 'BRASILIA ', 'BR', Decimal('40630'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-13', 'PAG*EduardoMeireles ', 'AGUAS LINDAS ', 'BR', Decimal('1400'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-13', 'MR JOHN BARBEARIA LTDA ', 'BRASILIA ', 'BR', Decimal('6000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-18', 'NETFLIX.COM ', 'SAO PAULO ', 'BR', Decimal('4490'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-19', 'PAG*FolhaDeSPaulo ', 'SAO PAULO ', 'BR', Decimal('2990'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-19', 'IFD*CR EXPRESS ', 'Osasco ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-22', 'APPLE.COM/BILL ', 'SAO PAULO ', 'BR', Decimal('9790'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-22', 'MERCADOLIVRE*MERCADOLIV', 'OSASCO ', 'BR', Decimal('44440'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-25', 'MP*5PRODUTOS ', 'OSASCO ', 'BR', Decimal('30893'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-25', 'MERCADOLIVRE*SABORESDAM', 'OSASCO ', 'BR', Decimal('25800'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-27', 'MP*MELIMAIS ', 'OSASCO ', 'BR', Decimal('1799'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-27', 'Wellhub Gympass BR Gymp', 'Sao Paulo ', 'BR', Decimal('39990'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-26', 'IFD*CR EXPRESS ', 'Osasco ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-29', 'MG LAVA JATO ', 'BRASILIA ', 'BR', Decimal('10000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-07-29', 'MERCADOLIVRE*GLDECOR ', 'OSASCO ', 'BR', Decimal('5075'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-01', 'MR JOHN BARBEARIA LTDA ', 'BRASILIA ', 'BR', Decimal('5400'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-04', 'APPLE.COM/BILL ', 'SAO PAULO ', 'BR', Decimal('5490'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-04', 'IFD*SCORPIONS EXPRESS ', 'Osasco ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-08', 'CASCOL COMBUSTIVEIS ', 'BRASILIA ', 'BR', Decimal('23937'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-07', 'IFD*GRAN LOG EXPRESS ', 'Osasco ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-09', 'SUPERAUTOR C*Supe ', 'NITEROI ', 'BR', Decimal('24786'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-09', 'UBER* TRIP ', 'WWW.UBER.COM. ', 'BR', Decimal('3089'), Decimal('0'), 1, '', '2024-08-27 15:06:40.471820'), ('2024-08-09', 'UBER *TRIP HELP.UBER.CO', 'SAO PAULO ', 'BR', Decimal('1000'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-08-09', 'UBER * PENDING ', 'SAO PAULO ', 'BR', Decimal('2793'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-08-09', 'UBER *TRIP HELP.UBER.CO', 'SAO PAULO ', 'BR', Decimal('500'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-15', 'VELOE ', 'BARUERI ', 'BR', Decimal('2226'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-19', 'POUSADA PIRENEUS RESOR ', 'PIRENOPOLIS ', 'BR', Decimal('17921'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-13', 'DL*GOOGLE YouTub ', 'SAO PAULO ', 'BR', Decimal('4190'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-16', 'STEAMGAMES.COM 42595229', '912-1844160 ', 'WA', Decimal('2400'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-16', 'IOF - COMPRA NO EXTERIO', 'R ', ' ', Decimal('26'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-16', 'STEAM PURCHASE ', 'SEATTLE ', 'DE', Decimal('12719'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-18', 'IOF - COMPRA NO EXTERIO', 'R ', ' ', Decimal('139'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-07-22', 'PAG*XsollaGames ', 'Sao Paulo ', 'BR', Decimal('2699'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-04-11', 'PRODUTOS GLOB PARC 04/1', '2 RIO DE JANEI', 'BR', Decimal('4490'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-01-15', 'MP*MUNDODOSCO PARC 07/1', '0 SAO PAULO ', 'BR', Decimal('15990'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-05-17', 'PAG*Folhadesp PARC 03/0', '6 Sao Paulo ', 'BR', Decimal('10960'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2023-10-17', 'BIANCHINI AUT PARC 10/1', '0 BRASILIA ', 'BR', Decimal('53500'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828'), ('2024-05-27', 'PARC=112 BRAS PARC 03/1', '2 BRASILIA ', 'BR', Decimal('45200'), Decimal('0'), 1, '', '2024-08-27 15:06:40.472828')]\n" + "iza 15.07.2024SALTO CORUMBA CORUMBA DE GO BR 163,85 0,00\n", + "iza 12.07.2024PG *TON MINHACANTINA BRASILIA BR 35,00 0,00\n", + "iza 12.07.2024PASTELARIA VICOSA IV BRASILIA BR 130,00 0,00\n", + "iza 12.07.2024PASTELARIA VICOSA IV BRASILIA BR 19,00 0,00\n", + "iza 13.07.2024CANTINA E CIA BRASILIA BR 4,50 0,00\n", + "iza 18.07.2024MERCADOLIVRE*3PRODUTOS OSASCO BR 362,28 0,00\n", + "iza 20.07.2024COFFEE BIKE CAFES ESPECBRASILIA BR 10,00 0,00\n", + "iza 19.07.2024IFD*ARCOS DOURADOS COMEBRASILIA BR 48,99 0,00\n", + "iza 22.07.2024RESTAURANTE FAROFINA BRASILIA BR 43,90 0,00\n", + "iza 23.07.2024PAG*DiogoLealPimenta BRASILIA BR 183,00 0,00\n", + "iza 28.07.2024TREVISO GALETERIA E P BRASILIA BR 200,20 0,00\n", + "iza 30.07.2024OLINDA COMIDA NORDESTI BRASILIA BR 66,45 0,00\n", + "iza 03.08.2024DULCE PATAGONIA BRASILIA BR 177,90 0,00\n", + "iza 03.08.2024HOT DOG CLUB BRASILIA BR 39,90 0,00\n", + "iza 04.08.2024RESTAURANTE SAO JOAO TERESINA BR 108,00 0,00\n", + "iza 04.08.2024GELATO E GRANO TERESINA BR 24,00 0,00\n", + "iza 05.08.2024F L L MELO LTDA SAO PAULO BR 63,00 0,00\n", + "iza 10.08.2024CREMERIA ITALIANA BRASILIA BR 49,00 0,00\n", + "iza 14.07.2024RITUARIA*Rituaria SAO PAULO BR 448,20 0,00\n", + "iza 24.07.2024BIOEXATA FARMACIA BRASILIA BR 73,70 0,00\n", + "iza 12.07.2024CASCOL COMBUSTIVEIS BRASILIA BR 297,86 0,00\n", + "iza 12.07.2024LIMBER SOFTWARE E CONS SAO LUIZ DO P BR 54,00 0,00\n", + "iza 13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 22,00 0,00\n", + "iza 13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 36,00 0,00\n", + "iza 13.07.2024PAG*CidaRommanel BRASILIA BR 30,00 0,00\n", + "iza 13.07.2024ALLPARK EMPREENDIMENTOSGoiania BR 6,00 0,00\n", + "iza 14.07.2024MERCADOLIVRE*CHINALINK OSASCO BR 445,89 0,00\n", + "iza 18.07.2024PG *S S MENDES COMERCI MOGI DAS CRUZ BR 150,12 0,00\n", + "iza 19.07.2024MERCADOLIVRE*3PRODUTOS OSASCO BR 276,52 0,00\n", + "iza 03.08.2024WOW*SALE COMERCIO E SE Brasilia BR 165,00 0,00\n", + "iza 07.08.2024PARENTELA PANIFICADORA BRASILIA BR 64,90 0,00\n", + "iza 08.08.2024FranciscoDeAssis BRASILIA BR 36,00 0,00\n", + "iza 09.08.2024BONNAPAN SEU DIA MAIS BRASILIA BR 23,08 0,00\n", + "iza 10.08.2024MP*BRILHODASARTE OSASCO BR 300,00 0,00\n", + "iza 11.07.2024CARREFOUR PL2 338 BRASILIA BR 83,17 0,00\n", + "iza 15.07.2024UBER * PENDING SAO PAULO BR 19,90 0,00\n", + "iza 22.07.2024UBER * PENDING SAO PAULO BR 8,98 0,00\n", + "iza 23.07.2024UBER* TRIP WWW.UBER.COM. BR 8,90 0,00\n", + "iza 24.07.2024UBER* TRIP WWW.UBER.COM. BR 8,98 0,00\n", + "iza 29.07.2024UBER * PENDING SAO PAULO BR 8,94 0,00\n", + "iza 30.07.2024UBER* TRIP WWW.UBER.COM. BR 8,94 0,00\n", + "iza 31.07.2024UBER* TRIP WWW.UBER.COM. BR 8,96 0,00\n", + "iza 06.08.2024UBER* TRIP WWW.UBER.COM. BR 8,99 0,00\n", + "iza 10.08.2024UBER* TRIP WWW.UBER.COM. BR 20,00 0,00\n", + "iza 10.08.2024UBER* TRIP WWW.UBER.COM. BR 9,42 0,00\n", + "iza 10.08.2024UBER * PENDING SAO PAULO BR 13,97 0,00\n", + "iza 12.07.2024CIDA REIS MODA FITNESS BRASILIA BR 300,00 0,00\n", + "iza 15.07.2024LANCHONETE SERRA RODO COCALZINHO DE BR 43,00 0,00\n", + "iza 09.08.2024HOTEL GOYA P*hote RIO DE JANEIR BR 424,20 0,00\n", + "iza 17.01.2024BRASILIA EMPR PARC 07/12 BRASILIA BR 599,00 0,00\n", + "iza 07.01.2024PG *B4A GLAMB PARC 08/12 SAO PAULO BR 74,90 0,00\n" ] } ], @@ -168,11 +304,13 @@ "from decimal import *\n", "import locale\n", "\n", - "locale.setlocale(locale.LC_ALL, 'BRA')\n", + "# export LC_ALL=\"pt_BR.UTF-8\"\n", + "# export LC_CTYPE=\"pt_BR.UTF-8\"\n", + "locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')\n", "getcontext().prec = 2\n", "\n", "# Open the text file\n", - "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file:\n", + "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r', encoding='latin') as file:\n", " # Read the contents of the file\n", " contents = file.readlines()\n", "\n", @@ -203,72 +341,70 @@ " # print(line)\n", " if re.match(line_pattern, line):\n", " if current_list == 'list_dan':\n", - " list_dan.append(line)\n", - " elif current_list == 'list_iza':\n", - " list_iza.append(line)\n", + " print(\"dan\", line)\n", + " # list_dan.append(line)\n", + " if current_list == 'list_iza':\n", + " print(\"iza\", line)\n", + " # list_iza.append(line)\n", "\n", - "# Print the results\n", - "print('Lines under list_dan:')\n", - "for item in list_dan:\n", - " # print(item)\n", - " match = re.search(line_group_pattern, item)\n", - " # print(match.group(1))\n", - " # build tuples for inserting\n", - " tDate = str(date(int(match.group(3)), int(match.group(2)), int(match.group(1))))\n", - " tDesc = match.group(4)\n", - " tCity = match.group(5)\n", - " tCountry = match.group(6)\n", - " tOutflow = Decimal(locale.atoi(match.group(7).strip()))\n", - " tInflow = Decimal(locale.atoi(match.group(8).strip()))\n", - " tOwner = 1\n", - " tInstallments = \"\"\n", - " tCreation = str(datetime.now(tz=None))\n", - " insert_bulk.append((tDate, tDesc, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreation))\n", - "print(insert_bulk)\n", + "# # Print the results\n", + "# print('Lines under list_dan:')\n", + "# for item in list_dan:\n", + "# # print(item)\n", + "# match = re.search(line_group_pattern, item)\n", + "# # print(match.group(1))\n", + "# # build tuples for inserting\n", + "# tTdate = str(date(int(match.group(3)), int(match.group(2)), int(match.group(1))))\n", + "# tAccount = 1\n", + "# tMemo = match.group(4)\n", + "# tCity = match.group(5)\n", + "# tCountry = match.group(6)\n", + "# tOutflow = match.group(7).strip().replace(',', '.')\n", + "# tInflow = match.group(8).strip().replace(',', '.')\n", + "# tOwner = 1\n", + "# tInstallments = None\n", + "# tCreated = str(datetime.now(tz=None))\n", + "# tUpdated = None\n", + "# insert_bulk.append(( tTdate, tAccount, tMemo, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreated, tUpdated ))\n", + "# print(insert_bulk)\n", "\n", "\n", "# print('\\nLines under list_iza:')\n", "# for item in list_iza:\n", "# # print(item)\n", "# match = re.search(line_group_pattern, item)\n", - "# print(match.group(1))\n", - "# tDate = date(int(match.group(3)), int(match.group(2)), int(match.group(1)))\n", - "# tDesc = match.group(4)\n", + "# # print(match.group(1))\n", + "# # build tuples for inserting\n", + "# tTdate = str(date(int(match.group(3)), int(match.group(2)), int(match.group(1))))\n", + "# tAccount = 1\n", + "# tMemo = match.group(4)\n", "# tCity = match.group(5)\n", "# tCountry = match.group(6)\n", - "# tOutflow = match.group(7)\n", - "# tInflow = match.group(8)\n", - "# tOwner = \"2\"\n", - "# tInstallments = \"\"\n", - "# tCreation = datetime.now(tz=None)\n", - "# insert_bulk.append((tDate, tDesc, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreation))\n", + "# tOutflow = match.group(7).strip().replace(',', '.')\n", + "# tInflow = match.group(8).strip().replace(',', '.')\n", + "# tOwner = 2\n", + "# tInstallments = None\n", + "# tCreation = str(datetime.now(tz=None))\n", + "# tUpdated = None\n", + "# insert_bulk.append(( tTdate, tAccount, tMemo, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreation, tUpdated ))\n", "# print(insert_bulk)\n", "\n" ] }, { "cell_type": "code", - "execution_count": 77, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "insert_query =\"\"\"INSERT INTO transaction (Date, Desc, City, Country, Outflow, Inflow, OwnerId, Installments, created_at) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s)\"\"\"\n" + "insert_query =\"INSERT INTO default.TRANSACTION (TDATE, ACCOUNTID, MEMO, CITY, COUNTRY, OUTFLOW, INFLOW, OWNERID, INSTALLMENTS, CREATED, UPDATED) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)\"" ] }, { "cell_type": "code", - "execution_count": 78, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CONNECTED! \n", - "1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Desc, City, Country, Outflow, Inflow, OwnerId, Installments, created_at) VALUES ' at line 1\n" - ] - } - ], + "outputs": [], "source": [ "# from getpass import getpass\n", "from mysql.connector import connect, Error\n", @@ -283,16 +419,13 @@ " print(\"CONNECTED!\", connection)\n", " with connection.cursor() as cursor:\n", " cursor.executemany(insert_query, insert_bulk)\n", + " connection.commit()\n", + " print(\"DONE!\")\n", "except Error as e:\n", - " print(e)" + " print(e)\n", + "finally:\n", + " connection.close()\n" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -311,7 +444,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.5" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/queries.sql b/queries.sql new file mode 100644 index 0000000..b264e94 --- /dev/null +++ b/queries.sql @@ -0,0 +1,30 @@ +INSERT INTO + default.TRANSACTION ( + ID, + TDATE, + ACCOUNTID, + MEMO, + CITY, + COUNTRY, + OUTFLOW, + INFLOW, + OWNERID, + INSTALLMENTS, + CREATED, + UPDATED + ) +VALUES + ( + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + ); \ No newline at end of file diff --git a/robopato.sql b/robopato.sql new file mode 100644 index 0000000..8b69634 --- /dev/null +++ b/robopato.sql @@ -0,0 +1,75 @@ +CREATE TABLE `ACCOUNTS` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `NAME` varchar(20), + `CREATED` datetime, + `UPDATED` datetime +); + +CREATE TABLE `TRANSACTION` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `DATE` date, + `ACCOUNTID` integer, + `DESC` varchar(23), + `CITY` varchar(14), + `COUNTRY` char(2), + `OUTFLOW` decimal(20,2), + `INFLOW` decimal(12,2), + `OWNERID` integer, + `INSTALLMENTS` integer DEFAULT 1, + `CREATED` datetime, + `UPDATED` datetime +); + +CREATE TABLE `PAYEE` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `NAME` varchar(20), + `CREATED` datetime, + `UPDATED` datetime +); + +CREATE TABLE `OWNER` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `NAME` varchar(20), + `CREATED` datetime, + `UPDATED` datetime +); + +CREATE TABLE `CATEGORY` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `NAME` varchar(20), + `CREATED` datetime, + `UPDATED` datetime +); + +CREATE TABLE `SUBCATEGORY` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `CATEGORYID` integer, + `NAME` varchar(20), + `CREATED` datetime, + `UPDATED` datetime +); + +CREATE TABLE `CATEGORIZED_TRANSACTIONS` ( + `ID` integer PRIMARY KEY AUTO_INCREMENT, + `ACCOUNTID` integer, + `TRANSACTIONID` integer, + `PAYEEID` integer, + `CATEGORYID` integer, + `SUBCATEGORYID` integer, + `CREATED` datetime, + `UPDATED` datetime +); + +ALTER TABLE `ACCOUNTS` ADD FOREIGN KEY (`ID`) REFERENCES `TRANSACTION` (`ACCOUNTID`); + +ALTER TABLE `OWNER` ADD FOREIGN KEY (`ID`) REFERENCES `TRANSACTION` (`OWNERID`); + +ALTER TABLE `CATEGORY` ADD FOREIGN KEY (`ID`) REFERENCES `SUBCATEGORY` (`CATEGORYID`); + +ALTER TABLE `TRANSACTION` ADD FOREIGN KEY (`ID`) REFERENCES `CATEGORIZED_TRANSACTIONS` (`TRANSACTIONID`); + +ALTER TABLE `CATEGORY` ADD FOREIGN KEY (`ID`) REFERENCES `CATEGORIZED_TRANSACTIONS` (`CATEGORYID`); + +ALTER TABLE `SUBCATEGORY` ADD FOREIGN KEY (`ID`) REFERENCES `CATEGORIZED_TRANSACTIONS` (`SUBCATEGORYID`); + +ALTER TABLE `PAYEE` ADD FOREIGN KEY (`ID`) REFERENCES `CATEGORIZED_TRANSACTIONS` (`PAYEEID`); diff --git a/table-test.txt b/table-test.txt index 5f2d2bc..6a4d6b4 100644 --- a/table-test.txt +++ b/table-test.txt @@ -2,6 +2,7 @@ KRAKARANGA BATURU UNGABUNGA TABLEA +UNGA DATA DATA DATA @@ -12,6 +13,7 @@ DATA DATA DATA TABLEB +BUNGA DELTA DELTA DELTA