From cb008e3aece041fa0cadeafd502cf5f398b525fc Mon Sep 17 00:00:00 2001 From: Nicolas Dickinson Date: Wed, 11 Sep 2024 16:06:06 +0200 Subject: [PATCH] Example database created for marketplace based in NL with VAT codes only --- README.md | 10 ++ example-filltable.py | 178 ++++++++++++++++++++++++++++ iso_4217_list_one.xls | Bin 0 -> 96768 bytes ttaxt.db | Bin 0 -> 36864 bytes wikidata_countries_currency.parquet | Bin 0 -> 7477 bytes 5 files changed, 188 insertions(+) create mode 100644 example-filltable.py create mode 100644 iso_4217_list_one.xls create mode 100644 ttaxt.db create mode 100644 wikidata_countries_currency.parquet diff --git a/README.md b/README.md index 2899835..301872d 100644 --- a/README.md +++ b/README.md @@ -132,3 +132,13 @@ These queries are examples generated by chatgpt atm and not yet tested or based Feel free to modify or extend the script to suit your specific business needs. +# Some depedencies + +- pandas +- requests +- pyvat +- sqlite3 +- SPARQLWrapper +- os +- openpyxl +- xlrd diff --git a/example-filltable.py b/example-filltable.py new file mode 100644 index 0000000..a2784d3 --- /dev/null +++ b/example-filltable.py @@ -0,0 +1,178 @@ +# Re-running the script due to the environment reset + +import requests +import pandas as pd +import pyvat +import sqlite3 +import pyarrow +from SPARQLWrapper import SPARQLWrapper, JSON +import os +from datetime import date +import logging + +# Set up logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + +# Database setup +db_path = 'ttaxt.db' +conn = sqlite3.connect(db_path) +cursor = conn.cursor() + +logging.info("Database connection established") + +# Create necessary tables +# Reverse charge values (as defined in pyvat): +# 1 - Charge VAT +# 2 - Reverse charge +# 3 - No charge +cursor.executescript(''' +CREATE TABLE IF NOT EXISTS countries ( + country_code TEXT PRIMARY KEY, + country_name TEXT, + continent TEXT, + currency TEXT +); + +CREATE TABLE IF NOT EXISTS vat_rules ( + country_code TEXT, + is_registered INTEGER, + vat_rate REAL DEFAULT NULL, + vat_action INTEGER DEFAULT NULL, + PRIMARY KEY (country_code, is_registered) +); +''') + +logging.info("Tables created successfully") + +# Function to fetch country and currency data from Wikidata using SPARQL +def fetch_wikidata_countries_and_currency(): + parquet_file = 'wikidata_countries_currency.parquet' + + if os.path.exists(parquet_file): + # Load data from parquet file if it exists + return pd.read_parquet(parquet_file) + else: + sparql = SPARQLWrapper("https://query.wikidata.org/sparql") + sparql.setQuery(""" + SELECT ?countryLabel ?iso_alpha_2 ?currency_code ?continentLabel WHERE { + ?country wdt:P31 wd:Q6256; # Select countries + wdt:P297 ?iso_alpha_2; # Get ISO 3166-1 alpha-2 codes + wdt:P38 ?currency; # Get currency + wdt:P30 ?continent. # Get continent + ?currency wdt:P498 ?currency_code. # Get ISO 4217 currency code + SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } + } + """) + sparql.setReturnFormat(JSON) + results = sparql.query().convert() + + # Process the data + data = [] + for result in results["results"]["bindings"]: + country_name = result["countryLabel"]["value"] + iso_alpha_2 = result["iso_alpha_2"]["value"] + currency_code = result["currency_code"]["value"] + continent = result["continentLabel"]["value"] + data.append((iso_alpha_2, country_name, continent, currency_code)) + logging.info(f"Appended data: {iso_alpha_2}, {country_name}, {continent}, {currency_code}") + + df = pd.DataFrame(data, columns=['Country Code', 'Country Name', 'Continent', 'Currency']) + logging.info(f"Created DataFrame with {len(df)} rows") + + # Save the data to a parquet file + df.to_parquet(parquet_file) + logging.info(f"Saved DataFrame to parquet file: {parquet_file}") + + return df + +# Set initial seller +seller = pyvat.Party('NL', is_business=True) # Assuming the seller is a business in the Netherlands + +# 1. Fetch country, currency, and continent data using SPARQL +logging.info("Fetching country data from Wikidata") +country_data_df = fetch_wikidata_countries_and_currency() +logging.info(f"Fetched {len(country_data_df)} countries from Wikidata") +logging.info(f"First few rows of country data:\n{country_data_df.head()}") + +# 2. Download and cross-check with ISO 4217 XLS +iso_4217_url = "https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-one.xls" +local_file_path = "iso_4217_list_one.xls" + +# Download the file if it doesn't exist +if not os.path.exists(local_file_path): + logging.info(f"Downloading ISO 4217 XLS file from {iso_4217_url}") + response = requests.get(iso_4217_url) + with open(local_file_path, 'wb') as file: + file.write(response.content) + logging.info("ISO 4217 XLS file downloaded successfully") +else: + logging.info("ISO 4217 XLS file already exists") + +# Read the Excel file, starting from row 4 (0-based index, so 3) +iso_4217_xls = pd.read_excel(local_file_path, sheet_name=0, header=3) +iso_4217_valid_codes = iso_4217_xls['Alphabetic Code'].dropna().tolist() +logging.info(f"Found {len(iso_4217_valid_codes)} valid currency codes in ISO 4217 XLS") + +# Filter out defunct currency codes +valid_countries_df = country_data_df[country_data_df['Currency'].isin(iso_4217_valid_codes)] +logging.info(f"Filtered to {len(valid_countries_df)} countries with valid currencies") +logging.info(f"First few rows of valid countries:\n{valid_countries_df.head()}") + +# Populate the countries table with filtered data +logging.info("Populating countries table") +for index, row in valid_countries_df.iterrows(): + cursor.execute(''' + INSERT OR REPLACE INTO countries (country_code, country_name, continent, currency) + VALUES (?, ?, ?, ?) + ''', (row['Country Code'], row['Country Name'], row['Continent'], row['Currency'])) + logging.info(f"Inserted country: {row['Country Name']} ({row['Country Code']}) into the database") + +conn.commit() +logging.info("Countries table populated successfully") + +# 3. Populate VAT rules using pyvat +logging.info("Populating VAT rules") +current_date = date.today() +item_type = pyvat.ItemType.generic_electronic_service + +business_types = [True, False] + +total_countries = len(valid_countries_df) +for business_type in business_types: + logging.info(f"Processing VAT rules for {'business' if business_type else 'non-business'} customers") + for index, row in valid_countries_df.iterrows(): + country_code = row['Country Code'] + country_name = row['Country Name'] + buyer = pyvat.Party(country_code, is_business=business_type) + vat_charge = pyvat.get_sale_vat_charge(current_date, item_type, buyer, seller) + vat_rate = float(vat_charge.rate) if vat_charge.rate is not None else None + is_registered = 1 if business_type else 0 # Convert boolean to integer + vat_action = vat_charge.action.value if vat_charge.action is not None else None + + cursor.execute(''' + INSERT OR REPLACE INTO vat_rules (country_code, is_registered, vat_rate, vat_action) + VALUES (?, ?, ?, ?) + ''', (country_code, is_registered, vat_rate, vat_action)) + + logging.info(f"Processed VAT rules for {country_name} ({country_code}): VAT rate = {vat_rate}, is_registered = {is_registered}, VAT action = {vat_action}") + + conn.commit() + logging.info(f"VAT rules for {'business' if business_type else 'non-business'} customers committed to database") + +# print table +logging.info("Fetching all VAT rules from database") +cursor.execute(''' + SELECT * FROM vat_rules +''') +vat_rules = cursor.fetchall() +logging.info(f"Total VAT rules: {len(vat_rules)}") +logging.info(f"First few VAT rules:\n{vat_rules[:5]}") + +# Commit changes and close the database +conn.commit() +conn.close() +logging.info("Database connection closed") + +# Provide the path to the created SQLite database +logging.info(f"SQLite database created at: {db_path}") +db_path diff --git a/iso_4217_list_one.xls b/iso_4217_list_one.xls new file mode 100644 index 0000000000000000000000000000000000000000..7d4b5de722d0ebd373e159acbf62a8cbccb649cd GIT binary patch literal 96768 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⩔8Q+SZl#;gE}})z=s;{BwxvFd+=TNZ92V%>IP z-F9N#c4FOjV%@%WV%@*XL)cEN3lIK3Cf4nyccbv-rjn`b^Zlig8S0@orQrPw*}@Dm ztndD2Q=pXcc!z+}+$IW*-CsE1_38KjEviqlU$lQ~KiPi&zy1Dy`~82s2#t5P@KSI4 z{eS!%#W=Lz|Htnij6?hV|4Vor+VB65VjS=;d;9%=9*6e(|KiQr_WS?hJ=*sB|Lynx z+wcF=oBQqe|1l5R@BbsC-@n}Z|CpUfszbm3?+X1;vNzf1*g4z9-~KxW8UA{0%l26> zS--QM#9sk?(7Fft{XSuR(0Z5kChIb5+NxXUTOP9eonakkt+JL{omLPl1)ev5iQInQ zF~5et5qOLFVe{SQTg*9gCo=n0&61fi&o)mmk1$stZ@-GXet$H6ZT!smuJH}y%f_wv z3xe-OR=+nGyNrf0YLtzv5j9RWjzUhq9>c&|gBSJR=)b_<75tWdH!}L&tlyx&L%&MD zL~rV2`nmdgZjF@sMo94;O`P%h}8X4dN9jsYc ztM;i~s;2zS{K_5=1^_Gj&z?Dr#6;v4OY?d{5+lxLL3mG9xN7=A^$4S&h- zeaf}UmC8lRHl?OiltCq?oT4199I7l*Or<0Am(XuRPhjxd|Joza9)b1S~fTLsc7wg{wp>x`5tZ*H?d+ILJK zMyH)^7759a60MzWR%vIOZD*TpXPa$jn}x^uf0=D|uEx%XlC#cH7y)NPQpdRwfym`J zH_S-MS?8(($(vpvkoMgukbL3!jFg;p?mR|H&N_E4BPC~@J4Yb-!U`ijoSiE(B01~- E0lb|;hX4Qo literal 0 HcmV?d00001 diff --git a/wikidata_countries_currency.parquet b/wikidata_countries_currency.parquet new file mode 100644 index 0000000000000000000000000000000000000000..bc7f2e0aa4f0eb6e001d396678c758cb371bfe74 GIT binary patch literal 7477 zcmds6eRLevb)V;*C+|vYdoAxOD@QdeS*uuzKUR`uEXUZ)%zl4sXFs%Sz`WTV?T$1% zv!0!iv;rqM4UYLrjR`amXfcq)BtQxUlD7Xq;LtYoG=x8LNYaxuC*-7Qp~t7EAGAHq z>79}MRZN?60{>L@yqWjzefR$EefQn>u9RhR;~v^`YP07jJxR|y>pWC1MZIcwucIi6 zV^9|z&q9;VKobi=6D>d!;!zh>z+DuJy>vK+dMO?|>0kmm>1-0{$vn_wxQphZ$Vo9k zi{#)V4>Pj3moAi1FCB^iV`>%{6F5zU@HQ%f4^m+qpd&2WMssPPu(+4X;RmQ74#0O5 zL_Q3hy>zmO#%Qhr96XHh_!;1Oi((xb_JX$OsVL6FJ3uo*w2$V>mX2O3g-^p%p^E+y zio>4D@}pV2&(c=}winW z){hVT&bDiOgG1Yg{Ue{)F*^3iox67L35-unOzxf9ckTY^1D`s0-J!$RGb|Sjg(J~e zJdsSLGufFOpDz?kv*pT>8*aSm=*>i^*2KAbLz-WZn~K^xrnPlracQ};a?7p9KmD28 zPJH%vKX?1d&!4(u?dQ(B?!M;>zjylHGxvS*{s(^lOAkKuV}rry7c`b$py!6Fuwt zPTKnJ_VoSzrjb+55&PxN=-&y+g7U1RpmD*AqM(19-}A2n7n8?Jz0och=ZHdT1jARH zw1|SXT%T68CDK_BBQZ^siBdy7-l(C}iPk}*xA83^DPABJ6iF9rK3*rf*!HP&KBg&Z zQk9^9mlfr@WHeEaJuE3GjE=bZC9x(d$m0!)N|R^{$U|pUbj?l&2uezN!yt-;Pallw zMDFy!7{4UxE24({=zy0o+PWqYbif_aM6oKO?qJ@~7Q~Jn7_+LT8+9V1Pr3`5Q8x&F z!4;}^S~?nYr^IEcs-nMeB}An|(4;%0Hzc*?Sae1jM8P-s!WvPk;zo+v{L6uaq||F_ zb1SMH6xEh2exmKmi7i8rr7HR_JJ*mL2i&YiRwNn8uAI?sOa4vnh^RG*;xCvM6U}I& zN9kB~>SkA{t*eUT2ks=%7XkT-i(3(^4UdSv;pJs@kt|5~TabiB#c{Jer#1)oqwPCb zLk1U1WD`XVzCNHgd?`{DYv?AV+ZkCvW2h&|X)4hr(hYVq;2nWT^Thv%n^9`2ruo;q zxlYRjv3)o}R>(r5trKPNI%kT=IzG@ysfsQtVqH_6Fuw?bszmW|lHQ@2qjp0egFo`c zK$0T10kVI9R}BEc%+2g{F>+nh9H-oc6+v8(Hj6HBhb*GQ!#p^Rv{X&p5E>Z<3qe6! z7bW~n7fTu%arD?3tvR>_?G5d)6IpU>7|`mXqDu-v_dBzqW-w(stqyK;CP0RN+Rc%s zpw=9xhC`&S`|?s#)zG+;YmgcqcZ*BDib$9{2WdOt9DUB6Hx`L(pe;_GG*$n~Ft5sL zQ&oJiHrnm~$AKbI45Aw@hH;UWL3}9ViWrh2hR!>)L?$@6KTQnH*aqGRLv(6nU)APJ zNmXq$KKPCo+*Ma)3ID(umgXh&-arwYw_=Dg9)#%{AvWd9>IJye279jnsUwm3(NYq1Xg#P+~_OB!Jt2*hcqz z8E~_?9U^X)Xo6A0Zx2LOrDkYA{oanC+5}Kl0+$GnlTr*8<-H-<#}j#RkfP|@e@+u+ zgPlIs%{)7xLLB*WQZ@8zcdV@uQ6BuEvn)2nuWWP2RjmdwCfU6#%r(ZoYOV$>ubqY)wY;{jfid`Y4#ghDjmX~vv+GA}u<8~jiBkd_?0Gv6Q*bB1yb z{=yFFf$TvqQtk(Tg^oCVp{B&#f?x9%B~e#MbMTP#XW}H<hEDLku=x!|lm@+^PFXo|FUokcunVMCi;2H{vzLQa)QEh~ z7^O`8Il9rASL^DDS6z8Sk=oKpxUGGXu zkXz7auw(Q=SD_AD1iwY+mQeTL-wgAwJg&lqX}pR)IHb&A4jG!-647=$99R9@(Z^|K4(*yXFE5#@ z2$u@;IHh7r+ko@gw_(dp^Ukm)rVY!u?78*I+vJ9|V{cWHw~LuG?=&#!;5%zqOPlS~ zFymf_zi&TtW+K+NZo|Dp4*P?l*tdpt`NuE*y!lg#a#1$N8Q&PP)xLAOM%%XTTtD*b zeV4rD;NU2RFjDl@E8KT%eNWj&&P|QHIcd7;10Y=0Rp&Q){<=HqIlWpBetW&w1j#`? zwcZ}jmZ42&63~VUIcTGWFj`L+c)XqFLwEoRLA>6cO{UQRv=tz6Q9MTHb2w}-lncmX z4@I&tnwrI9_5{?D8||Sy3j>iT-bl}8@qQ=)VFH)NhwW@GiMG?Z0`%E3K1|1Wyac5m zUQg#T*h8}s_(~=4S(-`0Jf?y@_CzI*!ZcTK9H9#w+DONO_=j|b0mfhjcnTGKH_atM zARjR$M1jDh9P6n9JUJN7h8%)fzUApe6sPD}2ER_F9eF7AfW5@y+i9K!WW_=ejnml( zew9w8!Rm0_F+hbtX*mLjBV}ObGWb54&G@_Nd>*>999~bw9S_+f`581$v7=AW(X`)2 z1s(h8SPtYuIX6yoxltR`JrZ3ueHqW-0ed=@0gDn5=qDL`mP(F3K&OfTHB|=8DHu*? z!F8Dwn34tOQ!}F_iU(5C;i365Ak4?{5h(C*i_S+KZ&E40jb=gsshEZ-iJZR#Wu9N8 z*&wXpY{q|+oyjoh9L?q(1CDVh3SXkLQHKQ5Dk&VMc^;;+B~TE9Ucyw%1)&MXp$X-n zUW@E1QQ$5+R}7&Ro#a75GG`%wgib|Z0a7LZW;&G%{WF~^_`9i;RHRa|yTH#I>2w4O z_CjP979dx`0vPf-&2zAFd=l`lHW~lk>-k{Bj7p}o`btNxo<41rRLN^&LRYWkY}jTq zi#eOE+h*&rtrm1PtD>`g%xkmt+iYf4XWM48U1PJ^F4T72YsDRg>Tb-e?(i743OsC9 zc!v%hK6E{Eh&{yN-=NOhL+TA1MqAwD+s7m_PZs1oQ1tC-9V29qw*6w|xBXUP)_%k) z{%j{dAFu@?U_MlGCnJ|~fSofmxb0Ott0~~U-oBq~9QhJAa&Etw0xtRDYP-JwhAGP1 z)rO<5Nj!GA!1>o*SsD7NxZ;peSen+FOJyzzR0;Ls(+`q3+n6|X?wrcb<2>X)WqeZRaG{cN_*&l@5n7faQmyl z*ANt^b#Z8?ZwRieA`B>oEJF`26`Bs+fc34m;B$O>%Ib(#=lG4#S(SLy5-+X^zEaMd zB+9j;SB|X$JF0hDroth(yjI~C4HgEY+3H**sKUHh)y?sysKXUdC%}Ho5X7?zQFO*1DE%uA=lZ%5SgJiakvvx~f?rAxnY=zc?}@qSYaqrY@NX7DcTssfsx|e(mnS z?!XW%&(NCo%ZL-Z;os14%IjouxlHN6YR>b%)3e9?nW%>thM9rK{7Ep(UWTnRVTP$Q zT-_RD*(>Nv<{->jqlcG*t9@uKDHc7(FiQ-~gSRCl09~`sFkBV**=u7>*{DQ{duJ!o zi$b)h3rb4LNUR`s;u2pP@0-EbyQ{>an{5%7zNiHjGDp|YOg;?w^F`-;h5 znrurKadGjWFj+Ke(fCv>WXdQ=ra#_?{{#4{kua=9c;#}ewbE3pJTbihwwd;V&&QX< z;&ecqWo2t^n$r?#7Uyf6Mb|4}2gnGNFZyYDI?0*qe8I1bG&3=l%vUX99^ugPM$*^A8i5QUhHUb)V-*?6Z? znwl3^*X3&1#;b}IOH)>yeN=v1+fUVI5&SvbS&QK|DaAYGS%^bx|FTo?-4Q0Mmj7$b zVy8MGFA9c=&)?g8myYFm4B?RnU{cb67aw}mnW_1OeG7G_T{1357bcD zOpFYBA>WxD^T*_6gTlmA0CI>dC}z^*W=wqnbH2$wQ?N3jrQ~92Wf(J2GO#~kZw0E# zLOpNh6^k>-nDaqj!OWLnXVlD}rld=t*YI%G1PhwUu*wH`uH63?1?&Yri~l;x>uVA1 lm?7%Bs;$;8>k#p+9TL9P