def test_create(self): invoice = Invoice() line = SaleItemLine() line.LineNum = 1 line.Description = "description" line.Amount = 100 line.SalesItemLineDetail = SalesItemLineDetail() item = Item.all(max_results=1, qb=self.qb_client)[0] line.SalesItemLineDetail.ItemRef = item.to_ref() invoice.Line.append(line) customer = Customer.all(max_results=1, qb=self.qb_client)[0] invoice.CustomerRef = customer.to_ref() invoice.CustomerMemo = CustomerMemo() invoice.CustomerMemo.value = "Customer Memo" invoice.save(qb=self.qb_client) query_invoice = Invoice.get(invoice.Id, qb=self.qb_client) self.assertEquals(query_invoice.CustomerRef.name, customer.DisplayName) self.assertEquals(query_invoice.CustomerMemo.value, "Customer Memo") self.assertEquals(query_invoice.Line[0].Description, "description") self.assertEquals(query_invoice.Line[0].Amount, 100.0)
def test_create(self): invoice = Invoice() line = SaleItemLine() line.LineNum = 1 line.Description = "description" line.Amount = 100 line.SalesItemLineDetail = SalesItemLineDetail() item = Item.all(max_results=1, qb=self.qb_client)[0] line.SalesItemLineDetail.ItemRef = item.to_ref() invoice.Line.append(line) customer = Customer.all(max_results=1, qb=self.qb_client)[0] invoice.CustomerRef = customer.to_ref() invoice.CustomerMemo = CustomerMemo() invoice.CustomerMemo.value = "Customer Memo" invoice.save(qb=self.qb_client) query_invoice = Invoice.get(invoice.Id, qb=self.qb_client) self.assertEquals(query_invoice.CustomerRef.name, customer.DisplayName) self.assertEquals(query_invoice.CustomerMemo.value, "Customer Memo") self.assertEquals(query_invoice.Line[0].Description, "description") self.assertEquals(query_invoice.Line[0].Amount, 100.0)
def create_qb_invoice(self, qb_client): invoice = QuickBooksInvoice() line = SalesItemLine() line.LineNum = 1 line.Description = self.description line.Amount = self.amount # line.ServiceDate = qb_date_format(datetime.date(2019, 1, 1)) line.SalesItemLineDetail = SalesItemLineDetail() line.SalesItemLineDetail.Qty = 1 line.SalesItemLineDetail.UnitPrice = self.amount item = Item.choose(["MF"], field="SKU", qb=qb_client)[0] line.SalesItemLineDetail.ItemRef = item.to_ref() invoice.Line.append(line) customer = Customer.get(self.organization.qbo_id, qb=qb_client) invoice.CustomerRef = customer.to_ref() # term = Term.choose(['Net 30'], field='Name', qb=qb_client)[0] # invoice.SalesTermRef = term # invoice.TotalAmt = self.amount invoice.save(qb=qb_client) print(invoice.Id)
def test_delete(self): # First create an invoice invoice = Invoice() line = SalesItemLine() line.LineNum = 1 line.Description = "description" line.Amount = 100 line.SalesItemLineDetail = SalesItemLineDetail() item = Item.all(max_results=1, qb=self.qb_client)[0] line.SalesItemLineDetail.ItemRef = item.to_ref() invoice.Line.append(line) customer = Customer.all(max_results=1, qb=self.qb_client)[0] invoice.CustomerRef = customer.to_ref() invoice.CustomerMemo = CustomerMemo() invoice.CustomerMemo.value = "Customer Memo" invoice.save(qb=self.qb_client) # Then delete invoice_id = invoice.Id invoice.delete(qb=self.qb_client) query_invoice = Invoice.filter(Id=invoice_id, qb=self.qb_client) self.assertEqual([], query_invoice)
def invoice_search(invoice_number, customer, client=None): """ invoice_number if == 1 then will force create a new one 999999999 will search for any existing specific # will search for that invoice # """ if client is None: client = get_quickbooks_client() invoice = None if invoice_number == "999999999": # search for any NeedToSend invoices for chapter # however, can not filter on EmailStatus directly invoices = Invoice.query( select= f"select * from Invoice where balance > '0' AND CustomerRef = '{customer.Id}'", qb=client, ) for invoice_test in invoices: if invoice_test.EmailStatus == "NeedToSend": invoice = invoice_test break elif invoice_number != "1" and invoice_number != "": # search for specific invoice number invoices = Invoice.query( select= f"select * from Invoice where DocNumber = '{invoice_number}' AND CustomerRef = '{customer.Id}'", qb=client, ) if invoices: invoice = invoices[0] if invoice is None: invoice = Invoice() term = Term.filter(name="Two Weeks", qb=client)[0] linenumber_count = 1 invoice.CustomerRef = customer.to_ref() invoice.AllowOnlineACHPayment = True invoice.BillEmail = customer.PrimaryEmailAddr invoice.EmailStatus = "NeedToSend" invoice.SalesTermRef = term.to_ref() invoice.CustomerMemo = CustomerMemo() else: linenumber_count = len(invoice.Line) return invoice, linenumber_count