diff --git a/SO_to_Inv/readSO.py b/SO_to_Inv/readSO.py index 49ef292..0156064 100644 --- a/SO_to_Inv/readSO.py +++ b/SO_to_Inv/readSO.py @@ -20,6 +20,8 @@ class SalesOrderQuery: self.PriceLevelName = None self.SPPriceLevelName = None self.cwd = kwargs['cwd'] if 'cwd' in kwargs else os.getcwd() + self.TxnID = kwargs['TxnID'] if 'TxnID' in kwargs else None + self.item_inventory_path = "ItemInventory" self.price_level_filename = "PriceLevel.xlsx" self._df_price_level = pd.read_excel(os.path.join(self.cwd, self.item_inventory_path, self.price_level_filename), usecols=['FullName', 'PriceLevelName', 'CustomPrice'],) @@ -99,25 +101,34 @@ class SalesOrderQuery: QBXMLMsgsRq.text = "\n " SalesOrderQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "SalesOrderQueryRq","\n " ) # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, 'SalesOrderType', self.SalesOrderType) - if self.RefNumber: + if self.TxnID: pass - RefNumberFilter = self.create_sub_element(ET, SalesOrderQueryRq, 'RefNumberFilter', "\n ",) - MatchCriterion = self.create_sub_element(ET,RefNumberFilter, 'MatchCriterion', "Contains",) - RefNumber = self.create_sub_element(ET, RefNumberFilter, 'RefNumber', self.RefNumber, ) - elif self.FullName: - EntityFilter = self.create_sub_element(ET, SalesOrderQueryRq, 'EntityFilter', "\n ") - FullName = self.create_sub_element(ET, EntityFilter, "FullName", self.FullName, 6) - elif self.DateMacro: - TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) - SalesOrderType = self.create_sub_element(ET, TxnDateRangeFilter, "DateMacro", self.DateMacro) - # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, "DateMacro", self.DateMacro) + print(self.TxnID) + if isinstance(self.TxnID, list): + for _ in self.TxnID: + TxnID = self.create_sub_element(ET, SalesOrderQueryRq, "TxnID", _, ) + else: + TxnID = self.create_sub_element(ET, SalesOrderQueryRq, "TxnID", self.TxnID, ) + else: + if self.RefNumber: + pass + RefNumberFilter = self.create_sub_element(ET, SalesOrderQueryRq, 'RefNumberFilter', "\n ",) + MatchCriterion = self.create_sub_element(ET,RefNumberFilter, 'MatchCriterion', "Contains",) + RefNumber = self.create_sub_element(ET, RefNumberFilter, 'RefNumber', self.RefNumber, ) + elif self.FullName: + EntityFilter = self.create_sub_element(ET, SalesOrderQueryRq, 'EntityFilter', "\n ") + FullName = self.create_sub_element(ET, EntityFilter, "FullName", self.FullName, 6) + elif self.DateMacro: + TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) + SalesOrderType = self.create_sub_element(ET, TxnDateRangeFilter, "DateMacro", self.DateMacro) + # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, "DateMacro", self.DateMacro) - elif type(self.FromTxnDate) is datetime.date or type(self.ToTxnDate) is datetime.date: - TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) - if type(self.FromTxnDate) is datetime.date: - FromTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "FromTxnDate", self.FromTxnDate.strftime('%Y-%m-%d'),4) - if type(self.ToTxnDate) is datetime.date: - ToTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "ToTxnDate", self.ToTxnDate.strftime('%Y-%m-%d')) + elif type(self.FromTxnDate) is datetime.date or type(self.ToTxnDate) is datetime.date: + TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) + if type(self.FromTxnDate) is datetime.date: + FromTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "FromTxnDate", self.FromTxnDate.strftime('%Y-%m-%d'),4) + if type(self.ToTxnDate) is datetime.date: + ToTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "ToTxnDate", self.ToTxnDate.strftime('%Y-%m-%d')) if self.IncludeLineItems: IncludeLineItems = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeLineItems", self.IncludeLineItems, 4) if len(self.IncludeRetElement)>0: @@ -178,11 +189,17 @@ class SalesOrderQuery: return self.get_customer_pricelevel(response_string) return response_string - def create_invoiceadd_QBXML(self, soList=None): + def create_invoiceadd_QBXML(self, soDict=None): print('create_ionvoiceadd_QBXML') - if soList: - self.SalesOrderList = soList + txn_date = str(date.today()) + ref_number = None + if soDict: + self.SalesOrderList = soDict['data'] + txn_date = soDict.get('txn_date', str(date.today())) + ref_number = soDict.get('ref_number', None) + # txn_date = str(date.today()) + root = ET.Element("QBXML") root.tail = "\n" root.text = "\n " @@ -196,11 +213,12 @@ class SalesOrderQuery: FullName = self.create_sub_element(ET, CustomerRef, "FullName", self.SalesOrderList[0]['CustomerFullName'], 8 ) TemplateRef = self.create_sub_element(ET, InvoiceAdd, "TemplateRef", "\n ", 8 ) TemplateFullName = self.create_sub_element(ET, TemplateRef, "FullName", "DBW Invoice (11%)", 8 ) - today = str(date.today()) - TxnDate = self.create_sub_element(ET, InvoiceAdd, "TxnDate", today,8) # self.DN['TxnDate'], 8 ) - - RefNumber = self.create_sub_element(ET, InvoiceAdd, "RefNumber", today,8 ) # self.DN['DNRefNum'], 8 ) - ShipDate = self.create_sub_element(ET, InvoiceAdd, "ShipDate", today,8) # self.DN['TxnDate'], 8 ) + # today = str(date.today()) + # print(txn_date) + TxnDate = self.create_sub_element(ET, InvoiceAdd, "TxnDate", txn_date, 8) # self.DN['TxnDate'], 8 ) + if ref_number: + RefNumber = self.create_sub_element(ET, InvoiceAdd, "RefNumber", ref_number, 8 ) # self.DN['DNRefNum'], 8 ) + # ShipDate = self.create_sub_element(ET, InvoiceAdd, "ShipDate", txn_date,8) # self.DN['TxnDate'], 8 ) # Memo = self.create_sub_element(ET, InvoiceAdd, "Memo", self.DN['Memo'], 10 ) disc_amount = 0 for soidx, salesorder in enumerate(self.SalesOrderList): diff --git a/django/Invoice/templates/Invoice/so_details_form.html b/django/Invoice/templates/Invoice/so_details_form.html index 3f7955b..56fe7e2 100644 --- a/django/Invoice/templates/Invoice/so_details_form.html +++ b/django/Invoice/templates/Invoice/so_details_form.html @@ -7,6 +7,14 @@