コード例 #1
0
ファイル: views.py プロジェクト: flackdl/abr
def json_estimates(request):
    client = get_qbo_client(get_callback_url(request))

    # get recent estimates
    query = "SELECT * FROM Estimate WHERE TxnDate >= '%s' ORDERBY TxnDate ASC MAXRESULTS %s" % (
        (datetime.now() - timedelta(weeks=settings.ESTIMATE_AGE_WEEKS)).date().isoformat(), settings.QBO_MAX_RESULTS)

    # remove "Closed" estimates without a "Tag #" which indicates the bike has been serviced and picked up
    results = [json.loads(e.to_json()) for e in Estimate.query(query, qb=client)]
    results = [e for e in results if not (e['TxnStatus'] == 'Closed' and not estimate_has_tag_number(e))]

    return JsonResponse({'success': True, 'estimates': results})
コード例 #2
0
ファイル: views.py プロジェクト: flackdl/abr
def purge_orders(request):
    client = get_qbo_client(get_callback_url(request))

    # get recent estimates
    query = "SELECT * FROM Estimate WHERE TxnDate >= '%s' ORDERBY TxnDate DESC MAXRESULTS %s" % (
        (datetime.now() - timedelta(weeks=settings.ESTIMATE_AGE_WEEKS)).date().isoformat(), settings.QBO_MAX_RESULTS)

    # filter to "Closed" and "Accepted"
    results = [json.loads(e.to_json()) for e in Estimate.query(query, qb=client)]
    results = [e for e in results if e['TxnStatus'] in ['Closed', 'Accepted']]

    orders_to_purge = []
    parts_to_purge = []
    for result in results:
        # verify the DocNumber is an integer
        if not result['DocNumber'] or not result['DocNumber'].isdigit():
            continue

        # delete all parts for this "DocNumber" (i.e estimate_id)
        order_parts = OrderPart.objects.filter(estimate_id=result['DocNumber'])
        order_ids = set()
        for part in order_parts:
            order_ids.add(part.order.id)
            parts_to_purge.append({
                "qbo_estimate_id": result['Id'],
                "part_id": part.id,
                "order_id": part.order.id,
                "qbo_DocNumber": part.estimate_id,
            })
            part.delete()

        # delete all orders without any associated parts
        orders = Order.objects.filter(order_id__in=order_ids)
        for order in orders:
            if not order.orderpart_set.exists():
                orders_to_purge.append({
                    "order_id": order.id,
                })
                order.delete()

    return JsonResponse({
        'parts_to_purge': parts_to_purge,
        'orders_to_purge': orders_to_purge,
    })
コード例 #3
0
    def test_unicode(self):
        estimate = Estimate()
        estimate.TotalAmt = 10

        self.assertEqual(str(estimate), "10")
コード例 #4
0
    def test_valid_object_name(self):
        obj = Estimate()
        client = QuickBooks()
        result = client.isvalid_object_name(obj.qbo_object_name)

        self.assertTrue(result)
コード例 #5
0
    def test_unicode(self):
        estimate = Estimate()
        estimate.TotalAmt = 10

        self.assertEquals(str(estimate), "10")
コード例 #6
0
    def test_create(self):
        self.customer = Customer.all(max_results=1, qb=self.qb_client)[0]

        estimate = Estimate()
        estimate.TotalAmt = 31.5
        estimate.ApplyTaxAfterDiscount = False
        estimate.PrintStatus = "NeedToPrint"
        estimate.EmailStatus = "NotSet"

        estimate.BillAddr = Address()
        estimate.BillAddr.Line1 = "65 Ocean Dr."
        estimate.BillAddr.City = "Half Moon Bay"
        estimate.BillAddr.CountrySubDivisionCode = "CA"
        estimate.BillAddr.PostalCode = "94213"
        estimate.BillAddr.Lat = "37.4300318"
        estimate.BillAddr.Long = "-122.4336537"

        estimate.ShipAddr = Address()
        estimate.ShipAddr.Id = "2" + datetime.now().strftime('%d%H%M')
        estimate.ShipAddr.Line1 = "65 Ocean Dr."
        estimate.ShipAddr.City = "Half Moon Bay"
        estimate.ShipAddr.CountrySubDivisionCode = "CA"
        estimate.ShipAddr.PostalCode = "94213"
        estimate.ShipAddr.Lat = "37.4300318"
        estimate.ShipAddr.Long = "-122.4336537"

        estimate.BillEmail = EmailAddress()
        estimate.BillEmail.Address = "*****@*****.**"

        estimate.CustomerMemo = CustomerMemo()
        estimate.CustomerMemo.value = "Thank you for your business and have a great day!"

        estimate.CustomerRef = Ref()
        estimate.CustomerRef.value = self.customer.Id
        estimate.CustomerRef.name = self.customer.DisplayName

        estimate.TxnTaxDetail = TxnTaxDetail()
        estimate.TxnTaxDetail.TotalTax = 0

        line = SalesItemLine()
        line.LineNum = 1
        line.Description = "Pest Control Services"
        line.Amount = 35.0

        line.SalesItemLineDetail = SalesItemLineDetail()
        line.SalesItemLineDetail.UnitPrice = 35
        line.SalesItemLineDetail.Qty = 1

        item_ref = Ref()
        item_ref.value = "10"
        item_ref.name = "Pest Control"
        line.SalesItemLineDetail.ItemRef = item_ref

        tax_code_ref = Ref()
        tax_code_ref.value = "NON"
        line.SalesItemLineDetail.TaxCodeRef = tax_code_ref

        estimate.Line.append(line)

        line2 = DiscountLine()
        line2.Amount = 3.5

        line2.DiscountLineDetail = DiscountLineDetail()
        line2.DiscountLineDetail.PercentBased = True
        line2.DiscountLineDetail.DiscountPercent = 10

        line2.DiscountLineDetail.DiscountAccountRef = Ref()
        line2.DiscountLineDetail.DiscountAccountRef.value = "86"
        line2.DiscountLineDetail.DiscountAccountRef.name = "Discounts given"

        line2.DetailType = "DiscountLineDetail"

        estimate.Line.append(line2)

        estimate.save(qb=self.qb_client)

        query_estimate = Estimate.get(estimate.Id, qb=self.qb_client)

        self.assertEqual(query_estimate.Id, estimate.Id)
        self.assertEqual(query_estimate.TotalAmt, estimate.TotalAmt)
        self.assertEqual(query_estimate.ApplyTaxAfterDiscount,
                         estimate.ApplyTaxAfterDiscount)
        self.assertEqual(query_estimate.PrintStatus, estimate.PrintStatus)
        self.assertEqual(query_estimate.EmailStatus, estimate.EmailStatus)
        self.assertEqual(query_estimate.BillAddr.Line1,
                         estimate.BillAddr.Line1)
        self.assertEqual(query_estimate.BillAddr.City, estimate.BillAddr.City)
        self.assertEqual(query_estimate.BillAddr.CountrySubDivisionCode,
                         estimate.BillAddr.CountrySubDivisionCode)
        self.assertEqual(query_estimate.BillAddr.PostalCode,
                         estimate.BillAddr.PostalCode)
        self.assertEqual(query_estimate.ShipAddr.Line1,
                         estimate.ShipAddr.Line1)
        self.assertEqual(query_estimate.ShipAddr.City, estimate.ShipAddr.City)
        self.assertEqual(query_estimate.ShipAddr.CountrySubDivisionCode,
                         estimate.ShipAddr.CountrySubDivisionCode)
        self.assertEqual(query_estimate.ShipAddr.PostalCode,
                         estimate.ShipAddr.PostalCode)
        self.assertEqual(query_estimate.BillEmail.Address,
                         estimate.BillEmail.Address)
        self.assertEqual(query_estimate.CustomerMemo.value,
                         estimate.CustomerMemo.value)
        self.assertEqual(query_estimate.CustomerRef.value,
                         estimate.CustomerRef.value)
        self.assertEqual(query_estimate.CustomerRef.name,
                         estimate.CustomerRef.name)
        self.assertEqual(query_estimate.TxnTaxDetail.TotalTax,
                         estimate.TxnTaxDetail.TotalTax)
        self.assertEqual(query_estimate.Line[0].LineNum,
                         estimate.Line[0].LineNum)
        self.assertEqual(query_estimate.Line[0].Description,
                         estimate.Line[0].Description)
        self.assertEqual(query_estimate.Line[0].Amount,
                         estimate.Line[0].Amount)
        self.assertEqual(query_estimate.Line[0].SalesItemLineDetail.UnitPrice,
                         estimate.Line[0].SalesItemLineDetail.UnitPrice)
        self.assertEqual(query_estimate.Line[0].SalesItemLineDetail.Qty,
                         estimate.Line[0].SalesItemLineDetail.Qty)
        self.assertEqual(query_estimate.Line[2].Amount,
                         estimate.Line[1].Amount)
        self.assertEqual(
            query_estimate.Line[2].DiscountLineDetail.PercentBased,
            estimate.Line[1].DiscountLineDetail.PercentBased)
        self.assertEqual(
            query_estimate.Line[2].DiscountLineDetail.DiscountPercent,
            estimate.Line[1].DiscountLineDetail.DiscountPercent)
        self.assertEqual(
            query_estimate.Line[2].DiscountLineDetail.DiscountAccountRef.value,
            estimate.Line[1].DiscountLineDetail.DiscountAccountRef.value)
        self.assertEqual(
            query_estimate.Line[2].DiscountLineDetail.DiscountAccountRef.name,
            estimate.Line[1].DiscountLineDetail.DiscountAccountRef.name)
コード例 #7
0
    def test_create(self):
        estimate = Estimate()
        estimate.TotalAmt = 31.5
        estimate.ApplyTaxAfterDiscount = False
        estimate.PrintStatus = "NeedToPrint"
        estimate.EmailStatus = "NotSet"

        estimate.BillAddr = Address()
        # estimate.BillAddr.Id = "1" + datetime.now().strftime('%d%H%M')
        estimate.BillAddr.Line1 = "65 Ocean Dr."
        estimate.BillAddr.City = "Half Moon Bay"
        estimate.BillAddr.CountrySubDivisionCode = "CA"
        estimate.BillAddr.PostalCode = "94213"
        estimate.BillAddr.Lat = "37.4300318"
        estimate.BillAddr.Long = "-122.4336537"

        estimate.ShipAddr = Address()
        estimate.ShipAddr.Id = "2" + datetime.now().strftime('%d%H%M')
        estimate.ShipAddr.Line1 = "65 Ocean Dr."
        estimate.ShipAddr.City = "Half Moon Bay"
        estimate.ShipAddr.CountrySubDivisionCode = "CA"
        estimate.ShipAddr.PostalCode = "94213"
        estimate.ShipAddr.Lat = "37.4300318"
        estimate.ShipAddr.Long = "-122.4336537"

        estimate.BillEmail = EmailAddress()
        estimate.BillEmail.Address = "*****@*****.**"

        estimate.CustomerMemo = CustomerMemo()
        estimate.CustomerMemo.value = "Thank you for your business and have a great day!"

        estimate.CustomerRef = Ref()
        estimate.CustomerRef.value = self.customer.Id
        estimate.CustomerRef.name = self.customer.DisplayName

        estimate.TxnTaxDetail = TxnTaxDetail()
        estimate.TxnTaxDetail.TotalTax = 0

        line = SalesItemLine()
        line.LineNum = 1
        line.Description = "Pest Control Services"
        line.Amount = 35.0

        line.SalesItemLineDetail = SalesItemLineDetail()
        line.SalesItemLineDetail.UnitPrice = 35
        line.SalesItemLineDetail.Qty = 1

        item_ref = Ref()
        item_ref.value = "10"
        item_ref.name = "Pest Control"
        line.SalesItemLineDetail.ItemRef = item_ref

        tax_code_ref = Ref()
        tax_code_ref.value = "NON"
        line.SalesItemLineDetail.TaxCodeRef = tax_code_ref

        estimate.Line.append(line)

        line2 = DetailLine()
        line2.Amount = 3.5

        discount_line_detail = DiscountLineDetail()
        discount_line_detail.PercentBased = True
        discount_line_detail.DiscountPercent = 10

        discount_account_ref = Ref()
        discount_account_ref.value = "86"
        discount_account_ref.name = "Discounts given"
        discount_line_detail.DiscountAccountRef = discount_account_ref

        line2.DetailType = "DiscountLineDetail"
        line2.DiscountLineDetail = discount_line_detail
        estimate.Line.append(line2)

        estimate.save(qb=self.qb_client)

        query_estimate = Estimate.get(estimate.Id, qb=self.qb_client)

        self.assertEqual(query_estimate.Id, estimate.Id)
        self.assertEqual(query_estimate.TotalAmt, estimate.TotalAmt)
        self.assertEqual(query_estimate.ApplyTaxAfterDiscount, estimate.ApplyTaxAfterDiscount)
        self.assertEqual(query_estimate.PrintStatus, estimate.PrintStatus)
        self.assertEqual(query_estimate.EmailStatus, estimate.EmailStatus)
        self.assertEqual(query_estimate.BillAddr.Line1, estimate.BillAddr.Line1)
        self.assertEqual(query_estimate.BillAddr.City, estimate.BillAddr.City)
        self.assertEqual(query_estimate.BillAddr.CountrySubDivisionCode, estimate.BillAddr.CountrySubDivisionCode)
        self.assertEqual(query_estimate.BillAddr.PostalCode, estimate.BillAddr.PostalCode)
        self.assertEqual(query_estimate.ShipAddr.Line1, estimate.ShipAddr.Line1)
        self.assertEqual(query_estimate.ShipAddr.City, estimate.ShipAddr.City)
        self.assertEqual(query_estimate.ShipAddr.CountrySubDivisionCode, estimate.ShipAddr.CountrySubDivisionCode)
        self.assertEqual(query_estimate.ShipAddr.PostalCode, estimate.ShipAddr.PostalCode)
        self.assertEqual(query_estimate.BillEmail.Address, estimate.BillEmail.Address)
        self.assertEqual(query_estimate.CustomerMemo.value, estimate.CustomerMemo.value)
        self.assertEqual(query_estimate.CustomerRef.value, estimate.CustomerRef.value)
        self.assertEqual(query_estimate.CustomerRef.name, estimate.CustomerRef.name)
        self.assertEqual(query_estimate.TxnTaxDetail.TotalTax, estimate.TxnTaxDetail.TotalTax)
        self.assertEqual(query_estimate.Line[0].LineNum, estimate.Line[0].LineNum)
        self.assertEqual(query_estimate.Line[0].Description, estimate.Line[0].Description)
        self.assertEqual(query_estimate.Line[0].Amount, estimate.Line[0].Amount)