diff --git a/datev_import_csv_dtvf/__manifest__.py b/datev_import_csv_dtvf/__manifest__.py index 837eac32..2a791456 100644 --- a/datev_import_csv_dtvf/__manifest__.py +++ b/datev_import_csv_dtvf/__manifest__.py @@ -8,7 +8,7 @@ "depends": ["account"], "website": "https://github.com/OCA/l10n-germany", "demo": [], - "external_dependencies": {"python": ["unicodecsv"]}, + "external_dependencies": {"python": ["chardet"]}, "data": [ "security/ir.model.access.csv", "data/sequence.xml", diff --git a/datev_import_csv_dtvf/examples/datev_export_semicolon.csv b/datev_import_csv_dtvf/examples/datev_export_semicolon.csv new file mode 100644 index 00000000..59fa6d42 --- /dev/null +++ b/datev_import_csv_dtvf/examples/datev_export_semicolon.csv @@ -0,0 +1,100 @@ +EXTF;700;22;Buchungsstapel;12;20230417083808874;;;;;12345;1234;20220101;4;20221201;20221231;Buchungsstapel 20220101;MM;1;;;EUR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;Konto;Gegenkonto (ohne BU-Schlüssel);BU-Schlüssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Geschäftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo - Art 1;Beleginfo - Inhalt 1;Beleginfo - Art 2;Beleginfo - Inhalt 2;Beleginfo - Art 3;Beleginfo - Inhalt 3;Beleginfo - Art 4;Beleginfo - Inhalt 4;Beleginfo - Art 5;Beleginfo - Inhalt 5;Beleginfo - Art 6;Beleginfo - Inhalt 6;Beleginfo - Art 7;Beleginfo - Inhalt 7;Beleginfo - Art 8;Beleginfo - Inhalt 8;Kost1 - Kostenstelle;Kost2 - Kostenstelle;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +"0,01";H;;;;;4900;1588;;3112;MISC/2022/12/990001;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;4811;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;2123e4a7-c837-4c0a-93e7-b66f59f5facc;;;0;;;;;;;;1;;;;1;;;;0 +10000;H;;;;;1210;0731;;3112;MISC/2022/12/990002;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;b8353f4a-a980-4057-a169-60b07f2cab4a;;;0;;;;;;;;1;;;;0;;;;0 +900;H;;;;;2735;0974;;3112;MISC/2022/12/990003;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;f9998b58-e899-4974-b472-766423f12aec;;;0;;;;;;;;1;;;;0;;;;0 +10000;S;;;;;1202;0731;;3112;MISC/2022/12/990004;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;201b0c44-0a7b-497a-898f-b44723ff4c5b;;;0;;;;;;;;1;;;;1;;;;0 +"3950,49";H;;;;;2735;0965;;3112;MISC/2022/12/990005;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;8e85a4e8-5f49-4913-973d-594657d546b4;;;0;;;;;;;;1;;;;0;;;;0 +50000;H;;;;;8977;7095;;3112;MISC/2022/12/990006;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;ed06dfc4-ab45-4300-b16f-446b73b813e9;;;0;;;;;;;;1;;;;0;;;;0 +"433,97";H;;;;;0731;1200;;3112;MISC/2022/12/990007;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;2f94abc0-f6c9-4291-846a-d63fe8451365;;;0;;;;;;;;1;;;;1;;;;0 +"433,97";H;;;;;1200;2114;;3112;MISC/2022/12/990008;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;ea7e2b3a-bf4c-4bea-8db3-9ece469c862f;;;0;;;;;;;;1;;;;0;;;;0 +"618,9";H;;;;;0731;1200;;3112;MISC/2022/12/990009;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;2356cdac-00b1-41fd-a413-3410d56e9b53;;;0;;;;;;;;1;;;;1;;;;0 +"618,9";H;;;;;1200;2114;;3112;MISC/2022/12/990010;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;5e1c97d0-ed2d-49bd-90a2-122c6e133be6;;;0;;;;;;;;1;;;;0;;;;0 +"678,08";H;;;;;0731;1200;;3112;MISC/2022/12/990011;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;0e758efe-d8d0-4a1c-b696-8fc0382599d2;;;0;;;;;;;;1;;;;1;;;;0 +"678,08";H;;;;;1200;2114;;3112;MISC/2022/12/990012;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;2d7c23e9-18e4-4eee-b7ac-9842da3b93bd;;;0;;;;;;;;1;;;;0;;;;0 +579;H;;;;;0980;4930;;3112;MISC/2022/12/990013;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;8fe6e1b5-f3e9-4bbb-98c8-59b9c381779e;;;0;;;;;;;;1;;;;0;;;;0 +2304;H;;;;;0980;4930;;3112;MISC/2022/12/990014;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;918fac41-5e9b-435c-8eb8-a17688c857f0;;;0;;;;;;;;1;;;;0;;;;0 +2306;H;;;;;0980;4167;;3112;MISC/2022/12/990015;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;1c5662b7-69e7-4e43-941f-b4e4fb743da2;;;0;;;;;;;;1;;;;0;;;;0 +2134;H;;;;;0980;4167;;3112;MISC/2022/12/990016;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;244255bf-7964-436b-a29a-f2db6121ad12;;;0;;;;;;;;1;;;;0;;;;0 +1055;H;;;;;0980;4167;;3112;MISC/2022/12/990017;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;64e32284-271d-4c20-8ca4-8f97b8106a56;;;0;;;;;;;;1;;;;0;;;;0 +892;H;;;;;0980;4360;;3112;MISC/2022/12/990018;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;26951b3a-7e1e-49e0-94e0-210c6134b81f;;;0;;;;;;;;1;;;;0;;;;0 +1283;H;;;;;0980;4360;;3112;MISC/2022/12/990019;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;15073479-d72f-44e9-aeea-b1cf942690b1;;;0;;;;;;;;1;;;;0;;;;0 +"2179,87";H;;;;;0980;4360;;3112;MISC/2022/12/990020;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;f6d10ec3-0562-4220-b717-2656c1837df5;;;0;;;;;;;;1;;;;0;;;;0 +"1366,58";H;;;;;0980;4360;;3112;MISC/2022/12/990021;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;5fe25876-a6ea-44ca-8200-a9b7d1ff3b6c;;;0;;;;;;;;1;;;;0;;;;0 +"141,37";S;;;;;4360;1610;;3112;MISC/2022/12/990022;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;70313b37-fc10-4e81-9c0f-be9f08f28401;;;0;;;;;;;;1;;;;1;;;;0 +"141,37";H;;;;;4360;1610;;3112;MISC/2022/12/990023;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;9af74142-7e9b-414b-b659-a1165c41346b;;;0;;;;;;;;1;;;;0;;;;0 +"1366,58";H;;;;;4360;0980;;3112;MISC/2022/12/990024;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;eee3358c-7a1b-4f10-bd48-5ab4e258337a;;;0;;;;;;;;1;;;;0;;;;0 +"2179,87";H;;;;;4360;0980;;3112;MISC/2022/12/990025;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;7944efbb-0f89-4018-8f54-8e3aa4257733;;;0;;;;;;;;1;;;;0;;;;0 +733;H;;;;;4520;0980;;3112;MISC/2022/12/990026;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;b5acc52d-9806-4e53-93be-68368a581976;;;0;;;;;;;;1;;;;0;;;;0 +"921,25";H;;;;;4520;0980;;3112;MISC/2022/12/990027;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;48112951-c498-452d-9d58-e37ad704ed94;;;0;;;;;;;;1;;;;0;;;;0 +10;H;;;;;4580;1610;;3112;MISC/2022/12/990028;101120;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;a77f49ec-04c6-40b3-a7da-4335ff8defd9;;;0;;;;;;;;1;;;;1;;;;0 +10;H;;;;;1610;4655;;3112;MISC/2022/12/990029;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;a758e088-9403-47d9-a9c2-f650a632e2b3;;;0;;;;;;;;1;;;;0;;;;0 +"969,91";H;;;;;4651;4653;;3112;MISC/2022/12/990030;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;47af40f2-3d5f-4db6-a3f2-cc0bd4dec60b;;;0;;;;;;;;1;;;;0;;;;0 +"190,37";S;;;;;1610;4666;;3112;MISC/2022/12/990031;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;0aa1f4df-6455-42c2-b6e2-125695c8f4b9;;;0;;;;;;;;1;;;;1;;;;0 +"190,37";H;;;;;1610;4663;;3112;MISC/2022/12/990032;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;d438fc44-3318-4310-bcc1-1e5e251221e0;;;0;;;;;;;;1;;;;0;;;;0 +210;S;;;;;4930;1610;;3112;MISC/2022/12/990033;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;ded0b449-08b2-45a4-b939-43c09202e4e4;;;0;;;;;;;;1;;;;1;;;;0 +188;H;;;;;4510;0980;;3112;MISC/2022/12/990034;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;737d8d48-cde4-4b36-bac5-aba6a29cf6b1;;;0;;;;;;;;1;;;;0;;;;0 +"99,63";H;;;;;4650;4654;;3112;MISC/2022/12/990035;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;d676b254-326c-4f2d-9c6c-e95d13be3af7;;;0;;;;;;;;1;;;;0;;;;0 +515;H;;;;;0980;4930;;3112;MISC/2022/12/990036;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;787bc4db-643e-4efe-a457-e1ccaf49558d;;;0;;;;;;;;1;;;;0;;;;0 +5000;S;;;;;8200;1200;;3112;MISC/2022/12/990037;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;bde12aa9-f955-44b3-b3a3-ee52e5f79c18;;;0;;;;;;;;1;;;;1;;;;0 +5000;S;;;;;1200;2709;;3112;MISC/2022/12/990038;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;d2449037-b965-4f60-999b-af3d08001922;;;0;;;;;;;;1;;;;0;;;;0 +6000;S;;;;;8339;1410;;3112;MISC/2022/12/990039;281120;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;GB106487414;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;S105030;;0;;;;0;JA;24c91e80-2953-4f59-af6e-258da2309f71;;;0;;;;;;;;1;;;;1;;;;0 +6000;H;;;;;8125;1410;;3112;MISC/2022/12/990040;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;GB106487414;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;e556f44a-084d-49a0-aa6e-919f2611524d;;;0;;;;;;;;1;;;;0;;;;0 +7000;S;;;;;8339;1410;;3112;MISC/2022/12/990041;281120;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;S105030;;0;;;;0;JA;61224e01-38bb-4614-9ea6-e63607f97cd3;;;0;;;;;;;;1;;;;1;;;;0 +7000;H;;;;;8125;1410;;3112;MISC/2022/12/990042;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;GB106487414;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;14bfa00d-cfad-4719-90b5-1c1c7c699ef2;;;0;;;;;;;;1;;;;0;;;;0 +8000;S;;;;;8339;1410;;3112;MISC/2022/12/990043;130121;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;S105600;;0;;;;0;JA;4047af57-0ad5-4deb-844a-084dbc8ec3fc;;;0;;;;;;;;1;;;;1;;;;0 +8000;H;;;;;8125;1410;;3112;MISC/2022/12/990044;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;GB106487414;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;be453309-72fb-44e6-b92c-b49b95a662d5;;;0;;;;;;;;1;;;;0;;;;0 +"743,04";H;;;;;1500;4900;;3112;MISC/2022/12/990045;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;06316c78-2d18-4874-aa95-4db047b88911;;;0;;;;;;;;1;;;;0;;;;0 +40;H;;;;;1590;1610;;3112;MISC/2022/12/990046;170720;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;56323c4f-be39-42d0-93d4-92e2b541ac76;;;0;;;;;;;;1;;;;1;;;;0 +40;H;;;;;1610;4900;;3112;MISC/2022/12/990047;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;246b2474-b3cc-4ce7-abe7-c9e24b5764d4;;;0;;;;;;;;1;;;;0;;;;0 +"2179,76";S;;;;;1740;1590;;3112;MISC/2022/12/990048;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;97fe0258-d2a1-4e8f-a779-42ec98679e9f;;;0;;;;;;;;1;;;;1;;;;0 +"2179,76";H;;;;;1740;4120;;3112;MISC/2022/12/990049;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;43fd187c-4a1e-4153-b68d-4a9c3de0acca;;;0;;;;;;;;1;;;;0;;;;0 +"0,17";H;;;;;1590;4120;;3112;MISC/2022/12/990050;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;067c3bbf-b660-40b9-97b9-ef3df2de31c3;;;0;;;;;;;;1;;;;0;;;;0 +"2522,26";H;;;;;1240;2150;;3112;MISC/2022/12/990051;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;dfdd673a-73e6-432e-bbba-e85af295c2df;;;0;;;;;;;;1;;;;0;;;;0 +"7272,88";H;;;;;2712;1502;;3112;MISC/2022/12/990052;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;1042f4b0-4154-4f50-9dd7-2908a020eebc;;;0;;;;;;;;1;;;;0;;;;0 +"6989,64";H;;;;;2712;1503;;3112;MISC/2022/12/990053;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;cd2400e2-7a25-4569-bbe2-f804d1587a5c;;;0;;;;;;;;1;;;;0;;;;0 +"12,4";S;;;;;1210;1010;;3112;MISC/2022/12/990054;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;70581441-1c13-4b4a-91fc-99c8c5d8e1a9;;;0;;;;;;;;1;;;;0;;;;0 +"3351,48";H;;;;;4138;1610;;3112;MISC/2022/12/990055;230520;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;7117dcbb-85af-4904-b791-33cfbbd771f2;;;0;;;;;;;;1;;;;1;;;;0 +"3351,48";H;;;;;1610;1700;;3112;MISC/2022/12/990056;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;0eae8f88-8bba-43d1-9796-8aa9ef0d7d98;;;0;;;;;;;;1;;;;0;;;;0 +3;S;;;;;4900;1200;;3112;MISC/2022/12/990057;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;a906986c-722c-472e-9539-6c4e4ac714b2;;;0;;;;;;;;1;;;;0;;;;0 +"13,93";H;;;;;4900;1010;;3112;MISC/2022/12/990058;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;2a176a17-8c41-477b-bae5-3d3330c06456;;;0;;;;;;;;1;;;;0;;;;0 +"5,94";H;;;;;1610;1576;;3112;MISC/2022/12/990059;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;271af3b5-3467-4397-b23f-b5f49f27c03d;;;0;;;;;;;;1;;;;0;;;;0 +3300;H;;;;;1610;4138;;3112;MISC/2022/12/990060;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;05987251-1ad4-4009-9e34-108225636217;;;0;;;;;;;;1;;;;0;;;;0 +"2516,7";H;;;;;4160;1610;;3112;MISC/2022/12/990061;201020;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;f87f1ce7-375f-41bd-a8c1-05adbf2ada2b;;;0;;;;;;;;1;;;;1;;;;0 +"2328,16";H;;;;;4160;1610;;3112;MISC/2022/12/990062;201020;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;758e1c98-c2fb-43eb-bf1c-eb95538bfa94;;;0;;;;;;;;1;;;;1;;;;0 +"1151,62";H;;;;;4160;1610;;3112;MISC/2022/12/990063;201020;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;9b86e51e-eed1-4b0c-97e6-cae5b026ae16;;;0;;;;;;;;1;;;;1;;;;0 +"2516,7";H;;;;;1610;4167;;3112;MISC/2022/12/990064;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;344be5d6-32c0-45c4-9a7a-853ac3ff020f;;;0;;;;;;;;1;;;;0;;;;0 +"2328,16";H;;;;;1610;4167;;3112;MISC/2022/12/990065;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;df3fe6a4-c0f4-4875-adb9-f70940e19520;;;0;;;;;;;;1;;;;0;;;;0 +"1151,62";H;;;;;1610;4167;;3112;MISC/2022/12/990066;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;5eebe54a-faa1-4bef-8dbb-c1ade63d4ebe;;;0;;;;;;;;1;;;;0;;;;0 +2097;H;;;;;4167;0980;;3112;MISC/2022/12/990067;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;c73d4b45-6245-4c63-a4a8-c124017e0f26;;;0;;;;;;;;1;;;;0;;;;0 +1940;H;;;;;4167;0980;;3112;MISC/2022/12/990068;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;9860d616-9050-47f5-88a4-52f2c87bf3a3;;;0;;;;;;;;1;;;;0;;;;0 +959;H;;;;;4167;0980;;3112;MISC/2022/12/990069;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;17ad8b09-c868-442e-840c-98cf8124012e;;;0;;;;;;;;1;;;;0;;;;0 +"271,36";S;;;;;4110;1200;;3112;MISC/2022/12/990070;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;de72855d-67dc-465d-ab21-92d8a64efa9e;;;0;;;;;;;;1;;;;1;;;;0 +"271,36";S;;;;;1200;2709;;3112;MISC/2022/12/990071;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;0c22829f-5a0d-42ae-9ed1-16ed639e36aa;;;0;;;;;;;;1;;;;0;;;;0 +"30782,11";S;;;;;1789;1780;;3112;MISC/2022/12/990072;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;415448a3-6ad7-4720-9f0c-9448275a6ccb;;;0;;;;;;;;1;;;;1;;;;0 +"30782,11";H;;;;;1789;1200;;3112;MISC/2022/12/990073;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;8d638284-bd75-497d-a596-354adef1f06a;;;0;;;;;;;;1;;;;1;;;;0 +"30782,11";H;;;;;1200;1790;;3112;MISC/2022/12/990074;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;9a57084e-8bea-4e16-bc64-82f44c802a61;;;0;;;;;;;;1;;;;0;;;;0 +"3517,27";H;;;;;1789;1780;;3112;MISC/2022/12/990075;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;7d4a5826-d772-4d7b-a476-a30b899b62ff;;;0;;;;;;;;1;;;;0;;;;0 +"26602,52";H;;;;;1789;1200;;3112;MISC/2022/12/990076;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;59b85686-03fe-4300-bf33-2463ecaf5f9d;;;0;;;;;;;;1;;;;1;;;;0 +"26602,52";H;;;;;1200;1780;;3112;MISC/2022/12/990077;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;97508a7d-1a24-4672-8d12-9269b4d38f4e;;;0;;;;;;;;1;;;;0;;;;0 +"3739,01";H;;;;;1789;1200;;3112;MISC/2022/12/990078;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;9ffb8a71-68d8-4ce8-82cd-6695d07260c7;;;0;;;;;;;;1;;;;1;;;;0 +"3739,01";H;;;;;1200;1780;;3112;MISC/2022/12/990079;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;dfd7e07a-5073-4a03-9701-52b0c13901b8;;;0;;;;;;;;1;;;;0;;;;0 +"15039,37";H;;;;;1789;1200;;3112;MISC/2022/12/990080;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;645914a3-0e10-44c1-9827-836b0bc80f4e;;;0;;;;;;;;1;;;;1;;;;0 +"15039,37";H;;;;;1200;1780;;3112;MISC/2022/12/990081;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;de61be72-3c06-4b4f-97c4-bc9deede0209;;;0;;;;;;;;1;;;;0;;;;0 +"4406,62";H;;;;;1789;1200;;3112;MISC/2022/12/990082;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;cececb2b-dbd0-4a74-8254-b8275c1013c2;;;0;;;;;;;;1;;;;1;;;;0 +"4406,62";H;;;;;1200;1780;;3112;MISC/2022/12/990083;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;acd026e4-1ab2-4938-a195-319d675fc6e4;;;0;;;;;;;;1;;;;0;;;;0 +"6534,63";S;;;;;1789;1741;;3112;MISC/2022/12/990084;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;c20b3331-6b03-4996-ba7b-92e2053c0d93;;;0;;;;;;;;1;;;;1;;;;0 +"588,36";S;;;;;1789;1741;;3112;MISC/2022/12/990085;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;a4cbd0b2-e24f-4c05-9660-067f4758d63c;;;0;;;;;;;;1;;;;1;;;;0 +"1790,12";S;;;;;1789;1741;;3112;MISC/2022/12/990086;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;a1537b96-da3a-49b8-816c-d4c5b81e260a;;;0;;;;;;;;1;;;;1;;;;0 +"588,36";H;;;;;1780;1741;;3112;MISC/2022/12/990087;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;141a343c-e606-419f-bcde-e3593a490261;;;0;;;;;;;;1;;;;0;;;;0 +"6534,63";H;;;;;1780;1741;;3112;MISC/2022/12/990088;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;43d5bd48-c8af-4ca3-a7c3-ec0ae538c5ac;;;0;;;;;;;;1;;;;0;;;;0 +"1790,12";H;;;;;1780;1741;;3112;MISC/2022/12/990089;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;b920e943-8a85-4b68-a6e9-dec7b66de897;;;0;;;;;;;;1;;;;0;;;;0 +"1790,12";S;;;;;1780;1789;;3112;MISC/2022/12/990090;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;539a81ab-d5c3-4cc1-9f20-63c1ff7e8200;;;0;;;;;;;;1;;;;1;;;;0 +;S;;;;;1789;1610;;3112;MISC/2022/12/990091;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;7048db67-6e4b-49a6-8f1b-b14687e158c0;;;0;;;;;;;;1;;;;1;;;;0 +15;S;;;;;1610;4900;;3112;MISC/2022/12/990092;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;42fd144e-549a-4c5c-8d5e-dbadc45055a8;;;0;;;;;;;;1;;;;0;;;;0 +"3237,31";H;;;;;1790;1545;;3112;MISC/2022/12/990093;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;33b52173-1714-4d12-8bd1-0ae8aa00c9ce;;;0;;;;;;;;1;;;;0;;;;0 +"109,99";S;;;;;1360;3435;;3112;MISC/2022/12/990094;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;a0c480ee-f39a-4b91-8a10-9005df48cc10;;;0;;;;;;;;1;;;;1;;;;0 +"109,99";H;;;;;1360;3425;;3112;MISC/2022/12/990095;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;535bd7ee-7509-4e43-a3e1-45f6f373f85d;;;0;;;;;;;;1;;;;0;;;;0 +"0,24";S;;;;;1789;8605;;3112;MISC/2022/12/990096;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;US;fd51fd16-f82f-4f1d-b633-55ad33f571ec;;;0;;;;;;;;1;;;;0;;;;0 +40;H;;;;;1750;4170;;3112;MISC/2022/12/990097;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;6e1d5031-6eb0-474c-a748-80f1d24e3395;;;0;;;;;;;;1;;;;0;;;;0 +72;H;;;;;0996;2450;;3112;MISC/2022/12/990098;;;Buchungsstapel 20220101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;0;JA;ba23453b-3a9a-42ad-9e42-b0eea65ef341;;;0;;;;;;;;1;;;;0;;;;0 diff --git a/datev_import_csv_dtvf/tests/test_datev_import_csv_dtvf.py b/datev_import_csv_dtvf/tests/test_datev_import_csv_dtvf.py index 9d208f23..b72fc40f 100644 --- a/datev_import_csv_dtvf/tests/test_datev_import_csv_dtvf.py +++ b/datev_import_csv_dtvf/tests/test_datev_import_csv_dtvf.py @@ -106,14 +106,10 @@ def setUp(self): } ) - def test_wizard(self): + def _test_wizard(self, filename): wizard = self.env["account.move.import"].create( { - "file_to_import": b64encode( - file_open("datev_import_csv_dtvf/examples/datev_export.csv") - .read() - .encode("utf8") - ), + "file_to_import": b64encode(file_open(filename).read().encode("utf8")), "force_journal_id": self.env["account.journal"] .search([("type", "=", "sale")], limit=1) .id, @@ -135,6 +131,12 @@ def test_wizard(self): self.assertEqual(len(analytic_lines), 1) self.assertEqual(sum(analytic_lines.mapped("amount")), 0.01) + def test_wizard_comma_separated(self): + self._test_wizard("datev_import_csv_dtvf/examples/datev_export.csv") + + def test_wizard_semicolon_separated(self): + self._test_wizard("datev_import_csv_dtvf/examples/datev_export_semicolon.csv") + def test_wizard_broken_file(self): wizard = self.env["account.move.import"].create( { diff --git a/datev_import_csv_dtvf/wizard/import_move.py b/datev_import_csv_dtvf/wizard/import_move.py index 07d82b5e..a686f40a 100644 --- a/datev_import_csv_dtvf/wizard/import_move.py +++ b/datev_import_csv_dtvf/wizard/import_move.py @@ -3,11 +3,11 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import base64 +import csv import logging from datetime import date as datelib, datetime -from tempfile import TemporaryFile -import unicodecsv +import chardet from odoo import _, fields, models from odoo.exceptions import UserError @@ -48,12 +48,8 @@ class AccountMoveImport(models.TransientModel): def run_import(self): self.ensure_one() - fileobj = TemporaryFile("wb+") file_bytes = base64.b64decode(self.file_to_import) - fileobj.write(file_bytes) - fileobj.seek(2) # We must start reading 3rd line ! - pivot = self.genericcsv2pivot(fileobj) - fileobj.close() + pivot = self.genericcsv2pivot(file_bytes) _logger.debug("pivot before update: %s", pivot) self.clean_strip_pivot(pivot) self.update_pivot(pivot) @@ -112,7 +108,7 @@ def update_pivot(self, pivot): if not l["debit"]: l["debit"] = 0.0 - def genericcsv2pivot(self, fileobj): + def genericcsv2pivot(self, file_bytes): # Prisme fieldnames = [ "sales", @@ -154,16 +150,17 @@ def genericcsv2pivot(self, fileobj): "analytic_account_1", "analytic_account_2", ] - first_line = fileobj.readline().decode() - dialect = unicodecsv.Sniffer().sniff(first_line) - fileobj.seek(0) - reader = unicodecsv.DictReader( - fileobj, + content = file_bytes.decode(chardet.detect(file_bytes)["encoding"]) + try: + dialect = csv.Sniffer().sniff(content, delimiters=";,") + except csv.Error: + dialect = csv.excel + reader = csv.DictReader( + content.splitlines(), fieldnames=fieldnames, delimiter=dialect.delimiter, - quotechar='"', - quoting=unicodecsv.QUOTE_MINIMAL, - encoding="ISO-8859-1", + quotechar=dialect.quotechar, + quoting=csv.QUOTE_MINIMAL, ) res = [] year_str = "" @@ -247,11 +244,10 @@ def create_moves_from_pivot(self, pivot, post=False): # noqa: C901 errors[key] = {} def match_account(line, speed_dict, id_field, code_field): - if line[code_field] in speed_dict: - line[id_field] = speed_dict[l[code_field]] + line[id_field] = speed_dict.get(line[code_field].upper()) if not line.get(id_field): # Match when import = 61100000 and Odoo has 611000 - acc_code_tmp = l[code_field] + acc_code_tmp = line[code_field].upper() while acc_code_tmp and acc_code_tmp[-1] == "0": acc_code_tmp = acc_code_tmp[:-1] if acc_code_tmp and acc_code_tmp in speed_dict: @@ -268,7 +264,7 @@ def match_account(line, speed_dict, id_field, code_field): line[id_field] = account_id break if not line.get(id_field): - errors[code_field].setdefault(line[code_field], []).append(l["line"]) + errors[code_field].setdefault(line[code_field], []).append(line["line"]) # MATCHES + CHECKS for l in pivot: # noqa: E741 @@ -280,8 +276,8 @@ def match_account(line, speed_dict, id_field, code_field): # 2. contra_account match_account(l, accc_speed_dict, "contra_account_id", "contra_account") # 3. journal - if l["journal"] in journal_speed_dict: - l["journal_id"] = journal_speed_dict[l["journal"]] + if (l["journal"] or "").upper() in journal_speed_dict: + l["journal_id"] = journal_speed_dict[(l["journal"] or "").upper()] else: errors["journal"].setdefault(l["journal"], []).append(l["line"]) # 4. name diff --git a/requirements.txt b/requirements.txt index cbba956c..4d812492 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ # generated from manifests external_dependencies -unicodecsv +chardet