diff --git a/2022.05.04_MINV_C b/2022.05.04_MINV_C
deleted file mode 100644
index ae1bfab..0000000
--- a/2022.05.04_MINV_C
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
- DAILY.MANUAL.INVOICE
- CONTRACTS THAT WERE NOT INVOICED
- PAGE 04-26-22 1
-
- CHRG BUSINESS
-CONTRACT.NO........ UATB.OIC.DUE RENTAL DUE......... UATB.IDS.OIC.PAYME TYPEM..... OUTSTANDING BALANCE.... SEGMENT. BOOKING.DATE BRANCH
-
-100-2453558-003 05/09/2022 183.71 0.00 MISC 201.16 001.000 03/09/2018 9
-100-2453558-003 04/09/2022 183.71 180.67 MISC 20.49 001.000 03/09/2018 9
-100-2453558-003 03/09/2022 183.71 183.71 MISC 17.45 001.000 03/09/2018 9
-100-1665517-003 05/15/2022 412.97 0.00 MISC 438.78 001.000 10/31/2014 9
-100-4850431-001 05/10/2022 411.80 0.00 MISC 441.21 001.000 12/10/2018 3
-100-4462739-001 04/18/2022 157.08 0.00 RENT 157.08 001.000 06/18/2018 9
-100-4850431-001 04/10/2022 411.80 0.00 MISC 441.21 001.000 12/10/2018 3
-100-3500858-001 05/12/2022 262.37 0.00 MISC 279.42 001.000 04/13/2016 9
-100-3725849-003 05/13/2022 559.32 0.00 MISC 612.45 001.000 10/19/2017 9
-100-3500858-001 04/12/2022 262.37 0.00 MISC 279.42 001.000 04/13/2016 9
-047-2580598-001 04/05/2022 0.00 0.00 MISC 72.53 001.000 03/06/2014 9
-100-3725849-003 03/13/2022 559.32 559.32 MISC 53.13 001.000 10/19/2017 9
-100-4566489-001 04/14/2022 0.00 354.04 MISC 2.25 001.000 06/14/2018 9
-100-4566489-001 05/14/2022 0.00 328.00 MISC 28.29 001.000 06/14/2018 9
-100-5382471-001 04/15/2022 1,128.00 0.00 MISC 1,228.11 001.000 10/09/2019 9
-100-5382471-001 05/15/2022 1,128.00 0.00 MISC 1,228.11 001.000 10/09/2019 9
-100-9723689-001 04/20/2022 0.00 0.00 RENT 571.58 001.000 04/20/2022 10
-100-9723689-001 04/20/2022 0.00 0.00 RENT 571.58 001.000 04/20/2022 10
-100-7219911-001 04/20/2022 0.00 0.00 RENT 813.08 001.000 04/20/2022 9
-100-1354567-002 05/25/2022 170.00 0.00 RENT 170.00 001.000 05/31/2016 9
-100-6651721-001 07/14/2021 0.00 761.00 MISC 53.27 001.000 07/14/2021 9
-100-2081987-008 05/25/2022 407.15 0.00 MISC 439.73 001.000 10/02/2017 9
-100-2139037-002 05/20/2022 105.00 0.00 MISC 111.67 001.000 03/20/2017 9
-100-3725849-003 04/13/2022 559.32 440.68 MISC 171.77 001.000 10/19/2017 9
-100-3344078-002 05/01/2022 -28.53 18.47 RENT 63.00 001.000 10/01/2020 9
-100-2081987-008 03/25/2022 407.15 0.00 MISC 439.73 001.000 10/02/2017 9
-100-1354567-002 04/25/2022 170.00 0.00 RENT 170.00 001.000 05/31/2016 9
-100-2081987-008 04/25/2022 407.15 0.00 MISC 439.73 001.000 10/02/2017 9
-100-2081987-008 02/25/2022 407.15 407.15 MISC 32.58 001.000 10/02/2017 9
-100-3876959-007 04/21/2022 61.07 0.00 RENT 61.07 001.000 06/21/2018 9
-100-1637209-005 05/20/2022 2,023.20 0.00 RENT 2,023.20 001.000 04/25/2022 9
-100-7146771-001 04/20/2022 183.28 167.00 RENT 16.28 001.000 04/25/2022 3
-100-7146771-001 05/20/2022 183.28 0.00 RENT 183.28 001.000 04/25/2022 3
-100-7045691-001 05/20/2022 244.57 0.00 RENT 244.57 001.000 04/25/2022 3
-100-7059671-001 05/20/2022 60.00 0.00 MISC 64.20 001.000 04/25/2022 3
-100-7237601-001 04/20/2022 0.00 0.00 RENT 34,192.91 001.000 04/25/2022 3
-100-7242461-001 05/20/2022 57.00 0.00 MISC 60.99 001.000 04/25/2022 9
-100-7178461-001 05/20/2022 197.45 0.00 MISC 209.30 001.000 04/25/2022 3
-100-2611389-007 05/20/2022 171.76 0.00 RENT 171.76 001.000 04/25/2022 3
-100-7037791-001 05/01/2022 444.00 0.00 MISC 478.41 001.000 04/25/2022 9
-100-7203371-001 05/20/2022 1,566.40 0.00 RENT 1,566.40 001.000 04/25/2022 3
-100-6630017-005 05/01/2022 0.00 178.55 MISC 0.01 001.000 04/25/2022 3
-100-6738611-001 04/20/2022 0.00 0.00 RENT 4,545.94 001.000 04/25/2022 3
-100-6738611-001 04/25/2022 0.00 0.00 RENT 4,545.94 001.000 04/25/2022 3
-100-7052571-001 05/14/2022 255.87 0.00 MISC 278.90 001.000 04/25/2022 9
-100-1011756-004 05/20/2022 1,001.64 0.00 MISC 1,081.77 001.000 04/25/2022 9
-100-6849836-001 05/20/2022 1,077.47 0.00 RENT 1,077.47 001.000 04/25/2022 3
-100-3492758-003 05/15/2022 312.41 0.00 RENT 312.41 001.000 04/25/2022 9
-100-7156851-001 05/20/2022 150.00 0.00 MISC 159.00 001.000 04/25/2022 3
-100-7232561-001 05/20/2022 113.60 0.00 MISC 122.12 001.000 04/25/2022 9
-100-3876959-007 05/21/2022 61.07 0.00 RENT 61.07 001.000 06/21/2018 9
-100-5382931-003 05/20/2022 146.69 0.00 RENT 146.69 001.000 04/26/2022 3
-100-5722341-003 05/20/2022 170.00 0.00 MISC 181.90 001.000 04/26/2022 3
-100-7150721-001 04/20/2022 174.96 0.00 RENT 174.96 001.000 04/26/2022 3
-100-7150721-001 05/20/2022 174.96 0.00 RENT 174.96 001.000 04/26/2022 3
-100-7165521-001 05/20/2022 1,417.88 0.00 RENT 1,417.88 001.000 04/26/2022 3
-100-7227921-001 05/20/2022 64.00 0.00 MISC 69.28 001.000 04/26/2022 3
-100-4858739-002 05/15/2022 208.00 0.00 MISC 225.16 001.000 04/26/2022 3
-100-7100621-001 05/13/2022 880.10 0.00 MISC 954.90 001.000 04/26/2022 9
-100-9725556-001 04/25/2022 0.00 0.00 RENT 600.77 001.000 04/26/2022 10
-100-9725556-001 04/26/2022 0.00 0.00 RENT 600.77 001.000 04/26/2022 10
-100-7209051-001 05/20/2022 1,652.01 0.00 RENT 1,652.01 001.000 04/26/2022 3
-100-9660710-001 05/09/2022 174.75 0.00 RENT 174.75 001.000 06/09/2021 10
-100-5329301-002 04/20/2022 0.00 0.00 RENT 263.44 001.000 04/26/2022 3
-100-7087121-001 05/16/2022 3,294.46 1,125.58 RENT 3,294.46 001.000 02/16/2022 12
-100-6602681-003 04/25/2022 0.00 0.00 RENT 478.00 001.000 04/26/2022 3
-100-6602681-003 04/25/2022 0.00 0.00 RENT 478.00 001.000 04/26/2022 3
-100-6754131-001 05/20/2022 747.75 0.00 RENT 747.75 001.000 04/26/2022 3
-100-7214111-001 05/21/2022 542.97 0.00 RENT 542.97 001.000 04/26/2022 9
-101-6898811-001 04/20/2022 0.00 0.00 RENT 15,035.55 001.000 04/26/2022 3
-100-2406418-003 05/20/2022 200.00 0.00 MISC 219.00 001.000 04/26/2022 9
-100-6943901-002 05/16/2022 236.40 0.00 MISC 257.67 001.000 04/26/2022 9
-100-1623380-901 05/15/2022 1,769.11 0.00 RENT 1,769.11 001.000 04/26/2022 10
-100-7107941-001 05/20/2022 1,038.95 0.00 RENT 1,038.95 001.000 02/23/2022 3
-100-7031531-001 05/20/2022 120.00 0.00 MISC 130.92 001.000 04/26/2022 3
-100-3630389-005 05/20/2022 168.00 0.00 MISC 181.86 001.000 04/26/2022 3
-100-7174941-002 05/20/2022 1,667.38 0.00 MISC 1,804.93 001.000 04/26/2022 9
-100-5204521-002 05/25/2022 3,222.20 0.00 RENT 3,222.20 001.000 04/26/2022 12
-100-7241571-001 05/20/2022 55.00 0.00 MISC 59.54 001.000 04/26/2022 3
-100-7182731-001 04/20/2022 0.00 0.00 RENT 1,025.37 001.000 04/26/2022 3
-100-7182731-001 04/26/2022 0.00 0.00 RENT 1,025.37 001.000 04/26/2022 3
-100-9726258-001 04/25/2022 0.00 0.00 RENT 255.97 001.000 04/26/2022 10
-100-9726258-001 04/26/2022 0.00 0.00 RENT 255.97 001.000 04/26/2022 10
-100-7220301-001 04/20/2022 0.00 0.00 RENT 1,238.00 001.000 04/26/2022 3
-100-7151521-001 05/15/2022 94.00 0.00 MISC 102.46 001.000 04/26/2022 9
-100-7237751-001 05/25/2022 2.00 101.65 MISC 2.14 001.000 04/26/2022 9
-100-3876959-005 03/25/2022 0.00 0.00 RENT 60.74 001.000 09/27/2017 9
-100-3910629-001 03/25/2022 0.00 0.00 RENT 245.81 001.000 03/30/2017 9
-100-3876959-005 04/25/2022 0.00 0.00 RENT 60.74 001.000 09/27/2017 9
-100-3910629-001 04/25/2022 0.00 0.00 RENT 245.81 001.000 03/30/2017 9
-104-4687809-001 04/25/2022 -2,161.94 140.00 MISC 9.80 001.000 08/29/2018 9
-100-3964329-001 04/28/2022 318.13 0.00 MISC 340.40 001.000 03/31/2017 9
-100-3964329-001 03/28/2022 318.13 0.00 MISC 340.40 001.000 03/31/2017 9
-100-1670517-003 04/16/2022 0.00 0.00 RENT 165.00 001.000 09/16/2021 3
-100-4945021-001 05/15/2022 0.00 0.00 RENT 1,357.77 001.000 02/15/2019 3
-100-3694757-001 05/01/2022 298.00 0.00 MISC 324.45 001.000 09/02/2016 9
-100-3694757-001 04/01/2022 298.00 0.00 MISC 324.45 001.000 09/02/2016 9
-100-6651721-002 07/25/2021 0.00 761.00 MISC 53.27 001.000 07/27/2021 9
-100-6814061-001 04/06/2022 0.00 169.00 RENT 15.63 001.000 04/06/2022 3
-100-7170651-001 04/07/2022 0.00 99.00 RENT 9.50 001.000 04/07/2022 3
-100-2446458-002 04/06/2022 865.00 859.26 MISC 66.29 001.000 12/06/2016 9
-100-2446458-002 05/06/2022 865.00 0.00 MISC 925.55 001.000 12/06/2016 9
-102 records listed
diff --git a/MINV/2022.06.09_MINV_C b/MINV/2022.06.09_MINV_C
deleted file mode 100644
index 2f07c06..0000000
--- a/MINV/2022.06.09_MINV_C
+++ /dev/null
@@ -1,42 +0,0 @@
-
- DAILY.MANUAL.INVOICE
- CONTRACTS THAT WERE NOT INVOICED
- PAGE 06-09-22 1
-
- CHRG BUSINESS
-CONTRACT.NO........ UATB.OIC.DUE RENTAL DUE......... UATB.IDS.OIC.PAYME TYPEM..... OUTSTANDING BALANCE.... SEGMENT. BOOKING.DATE BRANCH
-
-100-0553300-001 04/01/2022 413.81 0.00 RENT 413.81 001.000 11/01/2020 4.3
-047-4725409-001 04/14/2022 351.30 0.00 MISC 380.28 001.000 01/14/2019 3
-100-1864627-002 05/14/2022 146.71 156.07 MISC 9.36 001.000 07/14/2017 9
-100-6651721-001 07/14/2021 0.00 761.00 MISC 53.27 001.000 07/14/2021 9
-100-0553300-001 05/01/2022 413.81 0.00 RENT 413.81 001.000 11/01/2020 4.3
-100-6651721-002 07/25/2021 0.00 761.00 MISC 53.27 001.000 07/27/2021 9
-100-0553300-001 01/01/2022 413.81 319.43 RENT 94.38 001.000 11/01/2020 4.3
-047-4725409-001 05/14/2022 351.30 31.54 MISC 348.74 001.000 01/14/2019 3
-100-5047921-001 06/15/2022 94.69 0.00 RENT 94.69 001.000 04/11/2019 3
-100-3285968-004 05/25/2022 2,027.75 0.00 MISC 2,139.28 001.000 02/27/2019 9
-100-0553300-001 06/01/2022 413.81 0.00 RENT 413.81 001.000 11/01/2020 4.3
-100-0553300-001 02/01/2022 413.81 0.00 RENT 413.81 001.000 11/01/2020 4.3
-100-7218171-001 05/19/2022 0.00 157.00 MISC 10.60 001.000 05/19/2022 3
-047-4725409-001 06/14/2022 351.30 0.00 MISC 380.28 001.000 01/14/2019 3
-100-5189011-002 07/01/2022 130.58 275.67 RENT 130.58 001.000 07/16/2019 12
-100-2772548-003 06/25/2022 -830.51 0.00 MISC 601.48 001.000 05/30/2017 9
-100-3285968-004 06/25/2022 2,027.75 0.00 MISC 2,139.28 001.000 02/27/2019 9
-047-2903398-005 05/25/2022 0.00 0.00 MISC 58.25 001.000 04/25/2017 9
-100-2911448-002 05/25/2022 0.00 1,895.04 RENT 30.43 001.000 04/29/2022 9
-100-0553300-001 07/01/2022 413.81 0.00 RENT 413.81 001.000 11/01/2020 4.3
-100-0553300-001 03/01/2022 413.81 0.00 RENT 413.81 001.000 11/01/2020 4.3
-100-7220451-001 06/06/2022 0.00 171.00 RENT 19.45 001.000 06/06/2022 3
-100-7268381-001 06/06/2022 0.00 151.00 RENT 11.33 001.000 06/06/2022 3
-100-7314881-001 06/06/2022 0.00 119.00 RENT 9.88 001.000 06/06/2022 3
-100-7317551-001 06/25/2022 2,916.00 0.00 RENT 2,916.00 001.000 05/27/2022 12
-100-7289411-001 07/03/2022 556.33 0.00 RENT 556.33 001.000 06/03/2022 3
-100-7304881-002 07/01/2022 60.90 0.00 MISC 66.27 001.000 06/08/2022 9
-100-6943321-002 06/15/2022 8,012.77 0.03 RENT 8,012.77 001.000 04/12/2022 9
-100-1477460-002 07/08/2022 34,915.99 0.00 RENT 34,915.99 001.000 06/08/2022 12
-100-1516251-002 06/20/2022 1,485.99 0.00 RENT 1,485.99 001.000 09/24/2019 10
-100-7352541-001 06/09/2022 1,422.30 0.00 RENT 711.15 001.000 06/09/2022 3
-100-7352541-001 06/09/2022 1,422.30 0.00 RENT 711.15 001.000 06/09/2022 3
-100-9677665-001 06/25/2022 242.11 0.00 RENT 242.11 001.000 08/30/2021 10
-33 records listed
diff --git a/MINV/2022.06.10_MINV_C b/MINV/2022.06.10_MINV_C
deleted file mode 100644
index a7aac68..0000000
--- a/MINV/2022.06.10_MINV_C
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
- DAILY.MANUAL.INVOICE
- CONTRACTS THAT WERE NOT INVOICED
- PAGE 06-10-22 1
-
- CHRG BUSINESS
-CONTRACT.NO........ UATB.OIC.DUE RENTAL DUE......... UATB.IDS.OIC.PAYME TYPEM..... OUTSTANDING BALANCE.... SEGMENT. BOOKING.DATE BRANCH
-
-100-1049364-003 03/15/2022 79.56 0.00 RENT 79.56 001.000 10/01/2021 4.3
-100-1049364-003 04/15/2022 79.56 0.00 RENT 79.56 001.000 10/01/2021 4.3
-100-6651721-001 07/14/2021 0.00 761.00 MISC 53.27 001.000 07/14/2021 9
-100-1049364-003 12/15/2021 79.56 68.40 RENT 11.16 001.000 10/01/2021 4.3
-100-6651721-002 07/25/2021 0.00 761.00 MISC 53.27 001.000 07/27/2021 9
-100-1049364-003 05/15/2022 79.56 0.00 RENT 79.56 001.000 10/01/2021 4.3
-100-1049364-003 01/15/2022 79.56 0.00 RENT 79.56 001.000 10/01/2021 4.3
-100-2170587-001 05/21/2022 484.62 0.00 RENT 484.62 001.000 03/26/2013 9
-100-7218171-001 05/19/2022 0.00 157.00 MISC 10.60 001.000 05/19/2022 3
-100-1049364-003 06/15/2022 79.56 0.00 RENT 79.56 001.000 10/01/2021 4.3
-100-1049364-003 02/15/2022 79.56 0.00 RENT 79.56 001.000 10/01/2021 4.3
-100-2170587-001 06/21/2022 484.62 0.00 RENT 484.62 001.000 03/26/2013 9
-100-2772548-003 06/25/2022 -830.51 0.00 MISC 601.48 001.000 05/30/2017 9
-047-2903398-005 05/25/2022 0.00 0.00 MISC 58.25 001.000 04/25/2017 9
-100-2911448-002 05/25/2022 0.00 1,895.04 RENT 30.43 001.000 04/29/2022 9
-100-7220451-001 06/06/2022 0.00 171.00 RENT 19.45 001.000 06/06/2022 3
-100-7268381-001 06/06/2022 0.00 151.00 RENT 11.33 001.000 06/06/2022 3
-100-7314881-001 06/06/2022 0.00 119.00 RENT 9.88 001.000 06/06/2022 3
-100-7352541-001 06/09/2022 0.00 0.00 RENT 711.15 001.000 06/09/2022 3
-100-7352541-001 06/09/2022 0.00 0.00 RENT 711.15 001.000 06/09/2022 3
-100-9678164-001 06/25/2022 242.11 0.00 RENT 242.11 001.000 08/31/2021 10
-100-1570785-001 06/24/2022 765.50 0.00 RENT 765.50 001.000 02/24/2020 10
-100-4693949-001 06/17/2022 326.11 0.00 RENT 326.11 001.000 10/17/2018 3
-100-1500564-011 07/04/2022 1,239.97 0.00 RENT 1,239.97 001.000 06/09/2022 12
-100-9704497-001 06/16/2022 2,127.68 0.00 RENT 2,127.68 001.000 02/16/2022 10
-100-7318371-001 07/01/2022 257.76 0.00 RENT 257.76 001.000 06/09/2022 9
-100-1697447-005 06/20/2022 184.11 0.00 RENT 184.11 001.000 08/23/2019 3
-100-1697447-004 06/20/2022 287.93 0.00 RENT 287.93 001.000 07/30/2019 3
-100-4714407-008 07/01/2022 671.57 0.00 MISC 714.21 001.000 06/09/2022 9
-100-6051107-001 06/20/2022 30.15 39.99 RENT 30.15 001.000 09/08/2020 9
-100-3240348-006 06/14/2022 227.52 0.00 MISC 241.17 001.000 04/14/2022 9
-100-6795737-003 07/10/2022 0.00 0.00 RENT 30,000.00 001.000 06/10/2022 12
-100-9729335-001 06/10/2022 1,841.70 0.00 RENT 920.85 001.000 06/10/2022 10
-100-9729335-001 06/10/2022 1,841.70 0.00 RENT 920.85 001.000 06/10/2022 10
-100-7252451-001 06/10/2022 15.63 169.00 RENT 15.63 001.000 06/10/2022 3
-100-6238218-001 06/19/2022 74.99 0.00 RENT 74.99 001.000 11/19/2021 9
-100-7337851-001 06/10/2022 216.36 0.00 RENT 108.18 001.000 06/10/2022 3
-100-7337851-001 06/10/2022 216.36 0.00 RENT 108.18 001.000 06/10/2022 3
-100-7275051-001 06/10/2022 0.00 843.27 MISC 0.01 001.000 06/10/2022 3
-100-1017678-003 07/01/2022 718.61 0.00 MISC 777.89 001.000 05/16/2019 12
-100-4266879-003 07/03/2022 339.42 0.00 MISC 368.95 001.000 06/10/2022 9
-41 records listed
diff --git a/MINV/2022.06.13_MINV_C b/MINV/2022.06.13_MINV_C
deleted file mode 100644
index 8d17329..0000000
--- a/MINV/2022.06.13_MINV_C
+++ /dev/null
@@ -1,33 +0,0 @@
-
- DAILY.MANUAL.INVOICE
- CONTRACTS THAT WERE NOT INVOICED
- PAGE 06-13-22 1
-
- CHRG BUSINESS
-CONTRACT.NO........ UATB.OIC.DUE RENTAL DUE......... UATB.IDS.OIC.PAYME TYPEM..... OUTSTANDING BALANCE.... SEGMENT. BOOKING.DATE BRANCH
-
-100-6651721-001 07/14/2021 0.00 761.00 MISC 53.27 001.000 07/14/2021 9
-100-6550098-001 05/20/2022 619.26 108.80 RENT 510.46 001.000 05/25/2021 3
-100-6651721-002 07/25/2021 0.00 761.00 MISC 53.27 001.000 07/27/2021 9
-100-7218171-001 05/19/2022 0.00 157.00 MISC 10.60 001.000 05/19/2022 3
-100-2772548-003 06/25/2022 -830.51 0.00 MISC 601.48 001.000 05/30/2017 9
-047-2903398-005 05/25/2022 0.00 0.00 MISC 58.25 001.000 04/25/2017 9
-100-2911448-002 05/25/2022 0.00 1,895.04 RENT 30.43 001.000 04/29/2022 9
-100-6795737-003 07/10/2022 30,000.00 0.00 RENT 30,000.00 001.000 06/10/2022 12
-100-7252451-001 06/10/2022 0.00 169.00 RENT 15.63 001.000 06/10/2022 3
-100-6238218-001 06/19/2022 74.99 0.00 RENT 74.99 001.000 11/19/2021 9
-100-7337851-001 06/10/2022 0.00 0.00 RENT 108.18 001.000 06/10/2022 3
-100-7337851-001 06/10/2022 0.00 0.00 RENT 108.18 001.000 06/10/2022 3
-100-7275051-001 06/10/2022 0.00 843.27 MISC 0.01 001.000 06/10/2022 3
-100-4266879-003 07/03/2022 339.42 0.00 MISC 368.95 001.000 06/10/2022 9
-100-7203501-002 07/01/2022 40.00 0.00 MISC 42.50 001.000 06/10/2022 9
-100-7282331-001 06/10/2022 0.00 0.00 RENT 1,432.54 001.000 06/10/2022 3
-100-9735444-001 06/10/2022 0.00 0.00 RENT 214.90 001.000 06/10/2022 10
-100-9735444-001 06/10/2022 0.00 0.00 RENT 214.90 001.000 06/10/2022 10
-100-6930421-001 06/10/2022 0.00 0.00 RENT 1,982.24 001.000 06/10/2022 3
-100-6930421-001 06/10/2022 0.00 0.00 RENT 1,982.24 001.000 06/10/2022 3
-100-6721551-003 06/20/2022 1,210.36 0.00 RENT 1,210.36 001.000 09/24/2021 3
-100-6721551-002 06/20/2022 613.92 0.00 RENT 613.92 001.000 09/23/2021 3
-100-7136271-001 07/20/2022 176.54 0.00 RENT 176.54 001.000 03/22/2022 3
-100-7171001-001 06/17/2022 68.92 0.00 RENT 68.92 001.000 03/17/2022 9
-24 records listed
diff --git a/MINV/2022.06.14_MINV_C b/MINV/2022.06.14_MINV_C
deleted file mode 100644
index 22a6a95..0000000
--- a/MINV/2022.06.14_MINV_C
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
- DAILY.MANUAL.INVOICE
- CONTRACTS THAT WERE NOT INVOICED
- PAGE 06-14-22 1
-
- CHRG BUSINESS
-CONTRACT.NO........ UATB.OIC.DUE RENTAL DUE......... UATB.IDS.OIC.PAYME TYPEM..... OUTSTANDING BALANCE.... SEGMENT. BOOKING.DATE BRANCH
-
-100-7269201-001 06/14/2022 17.11 172.00 RENT 17.11 001.000 06/14/2022 3
-100-3654949-003 06/24/2022 1,086.99 0.00 RENT 1,086.99 001.000 09/24/2019 9
-100-3654949-002 06/20/2022 1,789.52 0.00 RENT 1,789.52 001.000 09/19/2019 9
-100-7199137-001 06/20/2022 1,068.97 0.00 RENT 1,068.97 001.000 04/29/2022 3
-100-7284391-001 07/08/2022 91.25 0.00 RENT 91.25 001.000 06/08/2022 9
-100-7209951-001 06/14/2022 0.00 160.00 MISC 11.20 001.000 06/14/2022 3
-100-7334181-001 07/01/2022 338.41 0.00 MISC 366.32 001.000 06/14/2022 9
-100-9570778-001 06/24/2022 637.91 0.00 RENT 637.91 001.000 02/24/2020 10
-100-7234311-001 06/14/2022 15.81 204.00 RENT 15.81 001.000 06/14/2022 3
-100-7294191-001 06/14/2022 14.80 160.00 RENT 14.80 001.000 06/14/2022 3
-100-0849508-002 04/15/2022 2,392.50 0.00 RENT 2,392.50 001.000 10/01/2021 4.3
-100-6651721-001 07/14/2021 0.00 761.00 MISC 53.27 001.000 07/14/2021 9
-100-6651721-002 07/25/2021 0.00 761.00 MISC 53.27 001.000 07/27/2021 9
-100-0849508-002 05/15/2022 2,392.50 0.00 RENT 2,392.50 001.000 10/01/2021 4.3
-100-0849508-002 06/15/2022 2,392.50 0.00 RENT 2,392.50 001.000 10/01/2021 4.3
-100-2772548-003 06/25/2022 -830.51 0.00 MISC 601.48 001.000 05/30/2017 9
-100-3618019-001 06/25/2022 428.34 0.00 MISC 466.36 001.000 09/28/2016 9
-047-2903398-005 05/25/2022 0.00 0.00 MISC 58.25 001.000 04/25/2017 9
-100-2911448-002 05/25/2022 0.00 1,895.04 RENT 30.43 001.000 04/29/2022 9
-100-7252451-001 06/10/2022 0.00 169.00 RENT 15.63 001.000 06/10/2022 3
-100-7275051-001 06/10/2022 0.00 843.27 MISC 0.01 001.000 06/10/2022 3
-100-7113121-001 07/13/2022 2,500.39 0.00 RENT 2,500.39 001.000 06/13/2022 3
-100-7342981-001 07/08/2022 103.56 0.00 MISC 109.77 001.000 06/08/2022 9
-100-7113391-002 07/01/2022 2,275.30 0.00 RENT 2,275.30 001.000 06/13/2022 3
-100-5398561-002 07/01/2022 786.33 0.00 MISC 847.27 001.000 06/13/2022 9
-100-4457819-001 06/20/2022 5,785.12 0.00 RENT 5,785.12 001.000 05/31/2018 3
-100-3744149-012 07/08/2022 50.00 0.00 MISC 53.00 001.000 06/13/2022 9
-100-3154768-008 07/01/2022 897.26 0.00 MISC 980.27 001.000 06/13/2022 9
-100-7318021-001 07/03/2022 295.00 0.00 MISC 320.08 001.000 06/13/2022 9
-100-2146226-002 07/01/2022 558.96 0.00 RENT 558.96 001.000 06/13/2022 9
-30 records listed
diff --git a/MINV/2022.06.15_MINV_C b/MINV/2022.06.15_MINV_C
deleted file mode 100644
index cdea9dc..0000000
--- a/MINV/2022.06.15_MINV_C
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
- DAILY.MANUAL.INVOICE
- CONTRACTS THAT WERE NOT INVOICED
- PAGE 06-15-22 1
-
- CHRG BUSINESS
-CONTRACT.NO........ UATB.OIC.DUE RENTAL DUE......... UATB.IDS.OIC.PAYME TYPEM..... OUTSTANDING BALANCE.... SEGMENT. BOOKING.DATE BRANCH
-
-100-7269201-001 06/14/2022 0.00 172.00 RENT 17.11 001.000 06/14/2022 3
-100-7209951-001 06/14/2022 0.00 160.00 MISC 11.20 001.000 06/14/2022 3
-100-7334181-001 07/01/2022 338.41 0.00 MISC 366.32 001.000 06/14/2022 9
-100-7234311-001 06/14/2022 0.00 204.00 RENT 15.81 001.000 06/14/2022 3
-100-7294191-001 06/14/2022 0.00 160.00 RENT 14.80 001.000 06/14/2022 3
-100-9570729-001 06/24/2022 637.91 0.00 RENT 637.91 001.000 02/24/2020 10
-100-7080901-001 06/14/2022 0.00 0.00 MISC 177.62 001.000 06/14/2022 3
-100-7313341-001 07/09/2022 217.00 0.00 RENT 217.00 001.000 06/14/2022 9
-100-7363251-001 06/14/2022 0.00 0.00 RENT 13,168.80 001.000 06/14/2022 3
-100-1564449-001 07/03/2022 430.01 0.00 RENT 430.01 001.000 02/03/2020 10
-100-7233611-001 06/15/2022 17.36 179.00 RENT 17.36 001.000 06/15/2022 3
-100-7151111-001 06/15/2022 480.40 0.00 RENT 480.40 001.000 06/15/2022 9
-100-9737145-001 06/15/2022 590.20 0.00 RENT 295.10 001.000 06/15/2022 10
-100-9737145-001 06/15/2022 590.20 0.00 RENT 295.10 001.000 06/15/2022 10
-100-7303761-001 08/14/2022 0.00 0.00 RENT 240,632.43 001.000 06/14/2022 12
-100-6651721-001 07/14/2021 0.00 761.00 MISC 53.27 001.000 07/14/2021 9
-100-6651721-002 07/25/2021 0.00 761.00 MISC 53.27 001.000 07/27/2021 9
-100-6726271-001 06/15/2022 1,588.04 0.00 RENT 1,588.04 001.000 08/31/2021 12
-100-2772548-003 06/25/2022 -830.51 0.00 MISC 601.48 001.000 05/30/2017 9
-047-2903398-005 05/25/2022 0.00 0.00 MISC 58.25 001.000 04/25/2017 9
-100-2911448-002 05/25/2022 0.00 1,895.04 RENT 30.43 001.000 04/29/2022 9
-100-5864201-501 07/07/2022 143.00 0.00 MISC 153.01 001.000 09/01/2020 9
-22 records listed
diff --git a/ManualInvoice.py b/ManualInvoice.py
deleted file mode 100644
index 28f494d..0000000
--- a/ManualInvoice.py
+++ /dev/null
@@ -1,142 +0,0 @@
-import os
-import pandas as pd
-from datetime import datetime as dt, timedelta
-import re
-from pathlib import Path
-import time
-import numpy as np
-from pprint import pprint as prt
-
-
-def pfd(df: pd.DataFrame):
- with pd.option_context('display.max_rows', None, 'display.max_columns', None): # more options can be specified also
- print(df)
-
-
-def create_line_divider(breakage_list: list):
- """
- This allows for the creation of a custom data extractor
- Breakage list defines the split points that will be used for the line
- Example
- Given breakage_list [10, 20, 30]
- using slot_num 0 in the resulting extract_line_slot will yield
- characters 0 - 10 from the string.
- Slot 1 would give characters 10 - 20
- """
- def extract_line_slot(slot_num : int, line_string: str, debug : bool = False):
- """
- Pulls data from a line/string using break points defined by the
- parent function.
- ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor'
- Will automatically convert numbers to floats
- """
- # We can't have a slot number higher than the number of slots
- assert(slot_num < len(breakage_list)+1)
- low_range = 0 if slot_num == 0 else breakage_list[slot_num-1]
- high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num]
- # In order to create a float we need to remove the , from the string
- data = line_string[low_range:high_range].strip().replace(",", "")
- try: data = float(data)
- except: pass
- if debug:
- print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}")
- return data
- return extract_line_slot
-
-
-def minv(report: str, save_name: str):
- lines = report.splitlines()
- data_extractor = create_line_divider([15,32,52,71,83,107,116,128])
- extracted_data_dict = {
- "ContractNumber" : [],
- "UTAB_OIC_DUE" : [],
- "RentalDue" : [],
- "UTAB_OIC_PYMT" : [],
- "ChargeType" : [],
- "OutstandBalance" : [],
- "BizSegment" : [],
- "BookingDate" : [],
- "Branch" : [],
- }
- columns = list(extracted_data_dict.keys())
- for line in enumerate(lines):
- if re.search(contract_number_regex, line[1]) != None:
- [extracted_data_dict[columns[c]].append(data_extractor(c,line[1],debug=False)) for c in range(0,len(columns))]
- #All the list lengths need to be the same so if anything was missed it will fail to build
- dataframe = pd.DataFrame(extracted_data_dict)
- # ( bookdate != today & rent = 0 ) OR (outstanding > 100 & rent = 0)
- # dt.today().strftime("%m/%m/%Y")
- filtered = dataframe[
- ((dataframe["BookingDate"] != '04/26/2022') & (dataframe["RentalDue"] == 0)) |\
- ((dataframe["RentalDue"] == 0 ) & (dataframe["OutstandBalance"] > 100))]
- filtered.to_excel(save_name, index=False)
- return filtered
-
-current_output = [
- '100-1011756-004',
- '100-1354567-002',
- '100-1637209-005',
- '100-1665517-003',
- '100-1670517-003',
- '100-2081987-008',
- '100-2139037-002',
- '100-2446458-002',
- '100-2453558-003',
- '100-2611389-007',
- '100-3492758-003',
- '100-3500858-001',
- '100-3694757-001',
- '100-3725849-003',
- '100-3876959-007',
- '100-3910629-001',
- '100-3964329-001',
- '100-4462739-001',
- '100-4850431-001',
- '100-4945021-001',
- '100-5382471-001',
- '100-6738611-001',
- '100-6849836-001',
- '100-7037791-001',
- '100-7045691-001',
- '100-7052571-001',
- '100-7059671-001',
- '100-7087121-001',
- '100-7107941-001',
- '100-7146771-001',
- '100-7156851-001',
- '100-7178461-001',
- '100-7203371-001',
- '100-7219911-001',
- '100-7232561-001',
- '100-7237601-001',
- '100-7242461-001',
- '100-9660710-001',
- '100-9723689-001',
-]
-
-contract_number_regex = "\d{3}-\d{7}-\d{3}"
-
-with open("2022.05.04_MINV_C", errors="replace") as ifile:
- report = ifile.read()
-
-fin_df = minv(report, "man_inv_test.xlsx")
-pfd(fin_df)
-il_contracts = fin_df.ContractNumber.to_list()
-prt(il_contracts)
-
-extra_contracts = []
-not_included = []
-for c in il_contracts:
- if c not in current_output:
- extra_contracts.append(c)
-for c in current_output:
- if c not in il_contracts:
- not_included.append(c)
-
-print("\nExtra Contracts:")
-prt(extra_contracts)
-print("Not Included Contracts:")
-prt(not_included)
-print(f"MATCHING CONTRACTS: {il_contracts == current_output}")
-print(f"Current # contract {len(current_output)} | ILE Processed Contracts: {len(il_contracts)}")
-print(f"# Extra contracts included: {len(extra_contracts)} | # Contracts not included: {len(not_included)}")
\ No newline at end of file
diff --git a/NI_sum.py b/NI_sum.py
deleted file mode 100644
index d15c395..0000000
--- a/NI_sum.py
+++ /dev/null
@@ -1,152 +0,0 @@
-import os
-import pandas as pd
-from datetime import datetime as dt, timedelta
-import sys, getopt
-import re
-from pathlib import Path
-import time
-from pprint import pprint as prt
-import numpy as np
-
-contract_number_regex = "\d{3}-\d{7}-\d{3}"
-
-def create_line_divider(breakage_list: list):
- """
- This allows for the creation of a custom data extractor
- Breakage list defines the split points that will be used for the line
- Example
- Given breakage_list [10, 20, 30]
- using slot_num 0 in the resulting extract_line_slot will yield
- characters 0 - 10 from the string.
- Slot 1 would give characters 10 - 20
- """
- def extract_line_slot(slot_num : int, line_string: str, debug : bool = False):
- """
- Pulls data from a line/string using break points defined by the
- parent function.
- ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor'
- Will automatically convert numbers to floats
- """
- assert(slot_num < len(breakage_list)+1)
- low_range = 0 if slot_num == 0 else breakage_list[slot_num-1]
- high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num]
- data = line_string[low_range:high_range].strip().replace(",", "")
- try: data = float(data)
- except: pass
- if debug:
- print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}")
- return data
- return extract_line_slot
-
-
-def net_invest_trial_balance(report: str, save_name: str):
- lines = report.splitlines()
- extracted_data_dict = {
- 'CUSTOMER NAME' : [],
- 'CURR INT RCVB' : [],
- 'UNEARNED BLENDED' : [],
- 'BLEND NET INV' : [],
- 'LEASE NUMBER' : [],
- 'GROSS CONTRACT' : [],
- 'CURR RENT RCVB' : [],
- 'UNEARN FIN' : [],
- 'END DEPOSIT' : [],
- 'SEC DEPOSIT' : [],
- 'LEASE PYMTS' : [],
- 'TOTAL' : [],
- 'CONTRACT STAT' : [],
- 'PAYMENTS RCVD' : [],
- 'REM RENT RCVB' : [],
- 'UNEARN RESID' : [],
- 'PROV LOSS' : [],
- 'NET RESERVE' : [],
- 'UNEARN INC' : [],
- 'BAL REMAINING' : [],
- 'RESIDUAL' : [],
- 'UNPAID INT' : [],
- 'NET INV' : [],
- 'UNEARNED IDC' : [],
- "LESSOR": []
- }
- lessors = []
- columns = list(extracted_data_dict.keys())
- line0 = list(zip(columns[0:4], [0,3,4,5]))
- line1 = list(zip(columns[4:12], [i for i in range(0,8)]))
- line2 = list(zip(columns[12:19], [i for i in range(0,7)]))
- line3 = list(zip(columns[19:-1], [i for i in range(1,6)]))
-
- for l in [line0,line1,line2,line3]:
- print(f"\n{l}")
-
- data_extractor = create_line_divider([18,32,50,66,84,100,117])
- for line in enumerate(lines):
- slot1 = data_extractor(0,line[1],False)
- if type(slot1) != str : continue
- if re.search(contract_number_regex, slot1) != None:
- data_section = lines[line[0]-1:line[0]+3]
-
- if data_section[0].find(".") == -1:
- data_section[0] = lines[line[0]-2]
- for ds in enumerate(data_section):
- if ds[1].find(".") == -1:
- if ds[0] < len(data_section) -1:
- for i in range(ds[0], len(data_section)-1):
- #print(f"{i}: { data_section[i]}")
- data_section[i] = data_section[i+1]
- #print(f"DELTA| {i}: { data_section[i]}")
- data_section[3] = lines[line[0]+3]
- else:
- data_section[3] = lines[line[0]+3]
-
-
- # [print(f"\n{d[0]}: {d[1]}") for d in enumerate(data_section)]
- # print('\n')
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[0], False)) for c in line0]
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[1], False)) for c in line1]
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[2], False)) for c in line2]
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[3], False)) for c in line3]
- extracted_data_dict["LESSOR"].append(extracted_data_dict["LEASE NUMBER"][-1][0:3])
- if extracted_data_dict["LESSOR"][-1] not in lessors:
- print(extracted_data_dict["LESSOR"][-1])
- lessors.append(extracted_data_dict["LESSOR"][-1])
- print(lessors)
- for c in columns:
- print(f"C: {c} | {len(extracted_data_dict[c])}")
- print(lessors)
- dataframe = pd.DataFrame(extracted_data_dict)
-
- summary_series = []
- for lessor in lessors:
- reduced_df = dataframe.loc[dataframe["LESSOR"] == lessor]
- del reduced_df["CUSTOMER NAME"]
- del reduced_df["LEASE NUMBER"]
- del reduced_df["CONTRACT STAT"]
- reduced_df = reduced_df.replace("", np.NaN)
- reduced_df = reduced_df.replace("REVOLV", np.NaN)
- reduced_df = reduced_df.replace("ING ACCOUNT", np.NaN)
- summation = reduced_df.sum(skipna=True, axis=0)
- summation["LESSOR"] = lessor
- summation["CONTRACT COUNT"] = len(reduced_df.index)
- summary_series.append(summation)
- summary_df = pd.concat(summary_series, axis=1).transpose().set_index("LESSOR")
- prt(summary_df)
- with pd.ExcelWriter(save_name) as writer:
- dataframe.to_excel(writer, index=False, sheet_name="data")
- pd.DataFrame(summary_df).to_excel(writer, index=True, sheet_name="Summary")
- return dataframe
-
-
-
-
-
-
-
-
-
-
-
-
-with open("/config/workspace/LEAF/IL Extract SRC/2022.05.20 Net Investment", errors="replace") as rep_file:
- report = rep_file.read()
-
-prt(net_invest_trial_balance(report, "520_NI_TEST.xlsx"))
\ No newline at end of file
diff --git a/RenewalTest.py b/RenewalTest.py
deleted file mode 100644
index 2ec11a4..0000000
--- a/RenewalTest.py
+++ /dev/null
@@ -1,97 +0,0 @@
-import os
-import pandas as pd
-from datetime import datetime as dt, timedelta
-import sys, getopt
-import re
-from pathlib import Path
-import time
-from pprint import pprint as prt
-import numpy as np
-
-contract_number_regex = "\d{3}-\d{7}-\d{3}"
-
-def create_line_divider(breakage_list: list):
- """
- This allows for the creation of a custom data extractor
- Breakage list defines the split points that will be used for the line
- Example
- Given breakage_list [10, 20, 30]
- using slot_num 0 in the resulting extract_line_slot will yield
- characters 0 - 10 from the string.
- Slot 1 would give characters 10 - 20
- """
- def extract_line_slot(slot_num : int, line_string: str, debug : bool = False):
- """
- Pulls data from a line/string using break points defined by the
- parent function.
- ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor'
- Will automatically convert numbers to floats
- """
- assert(slot_num < len(breakage_list)+1)
- low_range = 0 if slot_num == 0 else breakage_list[slot_num-1]
- high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num]
- data = line_string[low_range:high_range].strip().replace(",", "")
- try: data = float(data)
- except: pass
- if debug:
- print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}")
- return data
- return extract_line_slot
-
-def renewal_net_invest_trial_balance(report: str, save_name: str):
- lines = report.splitlines()
- data_extractor = create_line_divider([21,29,43,58,71,88,99,113])
- extracted_data_dict = {
- 'CUSTOMER NAME' : [],
- 'TYPE' : [],
- 'GROSS RENEWAL' : [],
- 'REMAINING BAL' : [],
- 'FINANCED RES' : [],
- 'REMAINING RES' : [],
- 'LEASE PYMTS' : [],
- 'CONTRACT NUMBER' : [],
- 'RENEWAL' : [],
- 'PAYMENTS RCVD' : [],
- 'CUR RENT RCVB' : [],
- 'UNEARNED RIN' : [],
- 'SECURITY DEP' : [],
- 'NET INVEST' : [],
- 'UNEARN INCOME' : [],
- 'TOTAL' : [],
- 'REM RENT RCVB' : [],
- 'UNPAID RES' : [],
- }
- columns = list(extracted_data_dict.keys())
- line0 = list(zip(columns[0:7], [0,1,2,3,4,5,7]))
- line1 = list(zip(columns[7:16], [i for i in range(0,9)]))
- line2 = list(zip(columns[16:], [3,4]))
-
- for line in enumerate(lines):
- slot1 = data_extractor(0,line[1],False)
- if type(slot1) != str : continue
- if re.search(contract_number_regex, slot1) != None:
- data_section = lines[line[0]-1:line[0]+2]
-
- if data_section[0].find(".") == -1:
- data_section[0] = lines[line[0]-2]
- for ds in enumerate(data_section):
- if ds[1].find(".") == -1:
- if ds[0] < len(data_section) -1:
- for i in range(ds[0], len(data_section)-1):
- data_section[i] = data_section[i+1]
- data_section[2] = lines[line[0]+2]
- else:
- data_section[2] = lines[line[0]+2]
-
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[0])) for c in line0]
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[1])) for c in line1]
- [extracted_data_dict[c[0]].append(data_extractor(c[1], data_section[2])) for c in line2]
- dataframe = pd.DataFrame(extracted_data_dict)
- dataframe.to_excel(save_name, index=False)
- return dataframe
-
-
-with open("/config/workspace/LEAF/IL Extract SRC/2022.05.20 Renewal Net Investment", errors="replace") as rep_file:
- report = rep_file.read()
-
-prt(renewal_net_invest_trial_balance(report, "RN_TEST_0606.xlsx"))
\ No newline at end of file
diff --git a/ach_fix.py b/ach_fix.py
deleted file mode 100644
index 1eb01da..0000000
--- a/ach_fix.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import os
-import pandas as pd
-from datetime import datetime as dt, timedelta
-import sys, getopt
-import re
-from pathlib import Path
-import time
-import numpy as np
-
-
-contract_number_regex = "\d{3}-\d{7}-\d{3}"
-
-
-def create_line_divider(breakage_list: list):
- """
- This allows for the creation of a custom data extractor
- Breakage list defines the split points that will be used for the line
- Example
- Given breakage_list [10, 20, 30]
- using slot_num 0 in the resulting extract_line_slot will yield
- characters 0 - 10 from the string.
- Slot 1 would give characters 10 - 20
- """
- def extract_line_slot(slot_num : int, line_string: str, debug : bool = False):
- """
- Pulls data from a line/string using break points defined by the
- parent function.
- ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor'
- Will automatically convert numbers to floats
- """
- # We can't have a slot number higher than the number of slots
- assert(slot_num < len(breakage_list)+1)
- low_range = 0 if slot_num == 0 else breakage_list[slot_num-1]
- high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num]
- # In order to create a float we need to remove the , from the string
- data = line_string[low_range:high_range].strip().replace(",", "")
- try: data = float(data)
- except: pass
- if debug:
- print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}")
- return data
- return extract_line_slot
-
-def ach(report: str, save_name: str):
- lines = report.splitlines()
- extracted_data_dict = {
- "ContractNumber" : [],
- "CustomerName" : [],
- "BankCode" : [],
- "BankNumber": [],
- "AccountNumber" : [],
- "Payment" : [],
- "Batch": [],
- "Lessor": [],
- "PaymentDate": [],
- }
- columns = list(extracted_data_dict.keys())
- batches = {
- "batch_num": [],
- "payment_date": [],
- "lessor": [],
- #"count": [],
- "total": []
- }
-
- data_extractor = create_line_divider([19,57,67,82,104])
- bank_number_regex = "\d{9}"
- batch_num_regex = "BATCH \d{4} TOTAL"
- for line in enumerate(lines):
- # Check for a contract number and a bank number in the line
- if (re.search(contract_number_regex, line[1]) != None) & (re.search(bank_number_regex, line[1]) != None):
- # Iterates through the columns list and adds the corresponding slot number to the dictonary for the column
- # Here the order of the columns (keys in dictonary) matter since they need to be in the same order as
- # the slot numbers
- [extracted_data_dict[columns[c]].append(data_extractor(c, line[1])) for c in range(0, len(columns)-3)]
- # This searches for a statement that looks like a batch number
- # This sums the contracts by thier lessor code. A feature requested by cash apps
- if re.search(batch_num_regex, line[1]) != None:
- # Batch number is always in characters 96 to 101
- batches["batch_num"].append(line[1][96:101])
- # Payment date will be 2 lines below that between charactes 114 and 125
- batches["payment_date"].append(lines[line[0]+2][114:125])
- # Lessor is just the first three number sof the contract number
- batches["lessor"].append(extracted_data_dict["ContractNumber"][-1][0:3])
- # Total is a number given by the report for that batch. ',' is removed so that it can be transformed into a float
- batches["total"].append(float(line[1][107:125].strip().replace(",", "")))
- #print(f"{line[0]+6} | {lines[line[0]+6][107:125]}\n{lines[line[0]+6]}")
- #batches["count"].append(float(lines[line[0]+6][107:125].strip().replace(",", "")))
- # Any time there's a new batch we need to add this data to the dictionary up up to the currrent place
- # So we iterate over the number of contracts and add in the newest value for each that don't have one of these values already
- [extracted_data_dict["Batch"].append(batches["batch_num"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["Batch"])))]
- [extracted_data_dict["Lessor"].append(batches["lessor"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["Lessor"])))]
- [extracted_data_dict["PaymentDate"].append(batches["payment_date"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["PaymentDate"])))]
- # Now the dictioanry lists should all be equal lengths and we can create a dataframe
- dataframe = pd.DataFrame(extracted_data_dict)
- # We're creating two sheets: data & summary so we need to open and excel writer
- # This also helps with a bug caused by larger dataframes
- with pd.ExcelWriter(save_name) as writer:
- dataframe.to_excel(writer, index=False, sheet_name="data")
- # The batches dictioanry is converted to a dataframe and added as it's own sheet
- pd.DataFrame(batches).to_excel(writer, index=False, sheet_name="Summary")
- return dataframe
-
-r1 = "/config/workspace/LEAF/IL Extract SRC/ach_errors/2022.05.27_ACH_C"
-r2 = "/config/workspace/LEAF/IL Extract SRC/ach_errors/2022.06.03_ACH_C"
-
-with open(r2, errors="replace") as ifile:
- report = ifile.read()
-
-ach(report, "test_ach_0613.xlsx")
\ No newline at end of file
diff --git a/ach_special.py b/ach_special.py
deleted file mode 100644
index 6550247..0000000
--- a/ach_special.py
+++ /dev/null
@@ -1,87 +0,0 @@
-import os
-import pandas as pd
-from datetime import datetime as dt, timedelta
-import sys, getopt
-import re
-from pathlib import Path
-import time
-from pprint import pprint as prt
-
-contract_number_regex = "\d{3}-\d{7}-\d{3}"
-
-def create_line_divider(breakage_list: list):
- """
- This allows for the creation of a custom data extractor
- Breakage list defines the split points that will be used for the line
- Example
- Given breakage_list [10, 20, 30]
- using slot_num 0 in the resulting extract_line_slot will yield
- characters 0 - 10 from the string.
- Slot 1 would give characters 10 - 20
- """
- def extract_line_slot(slot_num : int, line_string: str, debug : bool = False):
- """
- Pulls data from a line/string using break points defined by the
- parent function.
- ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor'
- Will automatically convert numbers to floats
- """
- assert(slot_num < len(breakage_list)+1)
- low_range = 0 if slot_num == 0 else breakage_list[slot_num-1]
- high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num]
- data = line_string[low_range:high_range].strip().replace(",", "")
- try: data = float(data)
- except: pass
- if debug:
- print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}")
- return data
- return extract_line_slot
-
-
-def ach(report: str, save_name: str):
-
- lines = report.splitlines()
- extracted_data_dict = {
- "ContractNumber" : [],
- "CustomerName" : [],
- "BankCode" : [],
- "BankNumber": [],
- "AccountNumber" : [],
- "Payment" : [],
- "Batch": [],
- "Lessor": [],
- "PaymentDate": [],
- }
- columns = list(extracted_data_dict.keys())
- batches = {
- "batch_num": [],
- "payment_date": [],
- "lessor": [],
- "count": [],
- "total": []
- }
-
- data_extractor = create_line_divider([19,57,67,82,104])
- bank_number_regex = "\d{9}"
- batch_num_regex = "BATCH \d{4} TOTAL"
- for line in enumerate(lines):
- if (re.search(contract_number_regex, line[1]) != None) & (re.search(bank_number_regex, line[1]) != None):
- [extracted_data_dict[columns[c]].append(data_extractor(c, line[1])) for c in range(0, len(columns)-3)]
- if re.search(batch_num_regex, line[1]) != None:
- batches["batch_num"].append(line[1][96:101])
- batches["payment_date"].append(lines[line[0]+2][114:125])
- batches["lessor"].append(extracted_data_dict["ContractNumber"][-1][0:3])
- batches["total"].append(float(line[1][107:125].strip().replace(",", "")))
- batches["count"].append(float(lines[line[0]+6][107:125].strip().replace(",", "")))
- [extracted_data_dict["Batch"].append(batches["batch_num"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["Batch"])))]
- [extracted_data_dict["Lessor"].append(batches["lessor"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["Lessor"])))]
- [extracted_data_dict["PaymentDate"].append(batches["payment_date"][-1]) for _ in range(0, (len(extracted_data_dict["BankCode"]) - len(extracted_data_dict["PaymentDate"])))]
-
- dataframe = pd.DataFrame(extracted_data_dict)
-
- return dataframe
-
-with open("/config/workspace/LEAF/IL Extract SRC/2022.05.04_ACH_C") as rep_file:
- report = rep_file.read()
-
-prt(ach(report, "ACH_TESTING.xlsx"))
\ No newline at end of file
diff --git a/copy.svg b/copy.svg
deleted file mode 100644
index 1012fc1..0000000
--- a/copy.svg
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
diff --git a/extract.ico b/extract.ico
deleted file mode 100644
index faab094..0000000
Binary files a/extract.ico and /dev/null differ
diff --git a/extract.svg b/extract.svg
deleted file mode 100644
index c392432..0000000
--- a/extract.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/folder.svg b/folder.svg
deleted file mode 100644
index 5488499..0000000
--- a/folder.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/lbf.py b/lbf.py
deleted file mode 100644
index 0d9cfeb..0000000
--- a/lbf.py
+++ /dev/null
@@ -1,168 +0,0 @@
-import os
-import pandas as pd
-from datetime import datetime as dt, timedelta
-import sys, getopt
-import re
-from pathlib import Path
-import time
-import numpy as np
-from pprint import pprint as prt
-
-
-contract_number_regex = "\d{3}-\d{7}-\d{3}"
-
-def dict_lens(dictionary):
- columns = list(dictionary.keys())
- for c in columns:
- print(f"{c} : {len(dictionary[c])}")
-
-
-
-def create_line_divider(breakage_list: list):
- """
- This allows for the creation of a custom data extractor
- Breakage list defines the split points that will be used for the line
- Example
- Given breakage_list [10, 20, 30]
- using slot_num 0 in the resulting extract_line_slot will yield
- characters 0 - 10 from the string.
- Slot 1 would give characters 10 - 20
- """
- def extract_line_slot(slot_num : int, line_string: str, debug : bool = False):
- """
- Pulls data from a line/string using break points defined by the
- parent function.
- ONLY USE THIS FUNCTION THROUGH CREATION USING 'create_line_extractor'
- Will automatically convert numbers to floats
- """
- # We can't have a slot number higher than the number of slots
- assert(slot_num < len(breakage_list)+1)
- low_range = 0 if slot_num == 0 else breakage_list[slot_num-1]
- high_range = len(line_string) if slot_num == len(breakage_list) else breakage_list[slot_num]
- # In order to create a float we need to remove the , from the string
- data = line_string[low_range:high_range].strip().replace(",", "")
- try: data = float(data)
- except: pass
- if debug:
- print(f"Slot num: {slot_num} | Low: {low_range} | High: {high_range} | Data: {data}")
- return data
- return extract_line_slot
-
-def lockbox(report: str, save_name: str):
- lines = report.splitlines()
- extracted_data_dict = {
- "CustomerName" : [],
- "PaymentDate" : [],
- "InvoiceNumber" : [],
- "CheckNumber" : [],
- "InvoicePayment" : [],
- "ContractNumber" : [],
- "ContractPayment" : [],
- }
- # These are lists of the dictionary columns/keys and the data slots in which
- # that data can be found in the report. this way we can iterate through them
- # While extracting data
- bank_payment_records = [list(extracted_data_dict.keys())[1:5],[1,2,3,4]]
- infolease_payment_records = [list(extracted_data_dict.keys())[5:],[7,8]]
-
- # Below are the Regular Exppressions used to find relvant data lines
- full_line = "\d*\s{5}\d{2}/\d{2}/\d{4}\s{4}1"
- contract_only_line = "\s{90}\d.{7}1\d{2}-"
- cust_name_line = "\s{98}.{28}\D*"
- # The data extractor allows us to extract data from the report using slots
- # Slots are ranges of character denote by the list feed into the creation function
- data_extractor = create_line_divider([9,19,39,56,69,90,98,118])
- for line in enumerate(lines):
- # We can skip empty lines
- if len(line[1]) == 0: continue
- # First we should check if there is a full line of data (defined by regex)
- if re.search(full_line, line[1]):
- # If this is true then we can iterate through the lists we created earlier and append the data to our dict
- for k in range(0,len(bank_payment_records[0])):
- extracted_data_dict[bank_payment_records[0][k]].append(data_extractor(bank_payment_records[1][k],line[1]))
- for k in range(0,len(infolease_payment_records[0])):
- extracted_data_dict[infolease_payment_records[0][k]].append(data_extractor(infolease_payment_records[1][k],line[1]))
- # Otherwise we should check if this is a line with only contract data
- elif re.search(contract_only_line,line[1]):
- # If that's the case we can use the 'bank payment data' from the previous entry since it should apply to his contract
- for k in range(0,len(bank_payment_records[0])):
- extracted_data_dict[bank_payment_records[0][k]].append(extracted_data_dict[bank_payment_records[0][k]][-1])
- for k in range(0,len(infolease_payment_records[0])):
- extracted_data_dict[infolease_payment_records[0][k]].append(data_extractor(infolease_payment_records[1][k],line[1]))
- # If it doesn't hit either of these critera then continue since it's irelevant data
- else: continue
- i = 1
- # used to track how many lines below the current line we're looking for the customer name
- # keep moving down a line and checking for a customer name
- # Customer name typically happens 1 line under data but can be 13 lines if cut off by page end
- while re.search(cust_name_line,lines[line[0]+i]) == None:
- i += 1
- # Once it hits, add the name to the dict
- extracted_data_dict["CustomerName"].append(data_extractor(7,lines[line[0]+i]))
- dataframe = pd.DataFrame(extracted_data_dict)
- dataframe.to_excel(save_name, index=False)
- return dataframe
-
-
-def lb2(report:str, save_name:str):
- lines = report.splitlines()
- extracted_data_dict = {
- "SEQ" : [],
- "PYMT DATE" : [],
- "INV NUM" : [],
- "CHECK NUMBER" : [],
- "PAYMENT AMOUNT" : [],
- "NOTE" : [],
- "IL SEQ" : [],
- "CONTRACT NUM" : [],
- "IL PAYMENT AMOUNT" : [],
- "CUST NAME" : [],
- }
- columns = list(extracted_data_dict.keys())
- data_extractor = create_line_divider([9,19,39,56,69,89,98,118])
- for line in enumerate(lines):
- match = False
- # Try to find the first SEQ # & a contract payment date e.i. ' 197 05/10/2022'
- if re.match("(\s|\d){3}\d{1}\s{5}\d{2}/\d{2}/\d{4}", line[1]):
- match = True
- # Add all of the data points except customer name
- [extracted_data_dict[columns[c]].append(data_extractor(c,line[1],debug=False)) for c in range(0,len(columns)-1)]
- # Check to see if this line contains only an infolease payment
- # Some times there are multiple infolease payments for a single bank record
- elif re.search(contract_number_regex, line[1]) != None:
- match = True
- # If there is then we can add the same data as the previous complete line
- [extracted_data_dict[columns[c]].append(extracted_data_dict[columns[c]][-1]) for c in range(0,6)]
- # Then add the new data for the infolease contract
- [extracted_data_dict[columns[c]].append(data_extractor(c,line[1],debug=False)) for c in range(6,len(columns)-1)]
- # If we had a match we need a customer name to associate with it
- # Sometimes these can appear on the next page hense the while loop searching for a match
- if match:
- # We can tell the cust name will be on the next page if the word "PAGE" appears three lines under the current line
- # And the next line is blank
- if (lines[line[0]+1].strip() == "") & (lines[line[0]+3].find("PAGE") != -1):
- i = 0
- # Look for a bunch of whitespace then some writing
- while not re.match("\s{98}.{34}", lines[line[0]+i]):
- i +=1
- # Once we find it add the cust name to the dict (it's the only thing on the line)
- extracted_data_dict["CUST NAME"].append(lines[line[0]+i].strip())
- # if the condition above isnt met then the cust name is on the next line (even if that line is blank)
- else:
- extracted_data_dict["CUST NAME"].append(lines[line[0]+1].strip())
- dataframe = pd.DataFrame(extracted_data_dict)
- dataframe.to_excel(save_name, index=False)
- return dataframe
-
-
-r1 = "/config/workspace/LEAF/IL Extract SRC/lb_errors/2022.05.10_LOCKBOX_094_C"
-r2 = "/config/workspace/LEAF/IL Extract SRC/lb_errors/2022.05.11_LOCKBOX_094_C"
-
-with open(r1, errors="replace") as ifile:
- report = ifile.read()
-
-lb2(report, "test_lb_0510.xlsx")
-
-with open(r2, errors="replace") as ifile:
- report = ifile.read()
-lb2(report, "test_lb_0511.xlsx")
\ No newline at end of file
diff --git a/man_inv_test.xlsx b/man_inv_test.xlsx
deleted file mode 100644
index 9871c60..0000000
Binary files a/man_inv_test.xlsx and /dev/null differ
diff --git a/process.svg b/process.svg
deleted file mode 100644
index e20b6ba..0000000
--- a/process.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/test_ach_0613.xlsx b/test_ach_0613.xlsx
deleted file mode 100644
index 486d727..0000000
Binary files a/test_ach_0613.xlsx and /dev/null differ
diff --git a/test_lb_0510.xlsx b/test_lb_0510.xlsx
deleted file mode 100644
index 4064cc4..0000000
Binary files a/test_lb_0510.xlsx and /dev/null differ
diff --git a/test_lb_0511.xlsx b/test_lb_0511.xlsx
deleted file mode 100644
index 1d6dc06..0000000
Binary files a/test_lb_0511.xlsx and /dev/null differ
diff --git a/test_lb_0613.xlsx b/test_lb_0613.xlsx
deleted file mode 100644
index 0b7dc61..0000000
Binary files a/test_lb_0613.xlsx and /dev/null differ