def purchaseorderdetails(request):
    context = {}

    po_id = request.POST['purchase_order_id']
    quotation_id = request.POST['quotation_id']
    shipping_inst = request.POST['shipping_inst']

    vendor_id = request.POST['vendor_id']
    description = request.POST['description']

    staff_id = request.POST['staff_id']
    staff_info = Person.objects.get(person_id=staff_id)
    quotation = Quotation.objects.get(quotation_id=quotation_id)
    vendor_info = Vendor.objects.get(vendor_id=vendor_id)

    responses = request.read()
    print(responses)

    q = QueryDict(responses)

    items_id = q.getlist('item_id')
    print(items_id)
    items_name = q.getlist('item_name')
    print(items_name)
    items_quantity = q.getlist('quantity')
    print(items_quantity)
    items_unit_price = q.getlist('unit_price')
    print(items_unit_price)
    items_total_price = q.getlist('total_price')
    print(items_total_price)

    items = list()

    i = 0
    items_length = len(items_id)
    grand_total = Decimal(0)

    while i < items_length:
        total = Decimal(items_quantity[i]) * Decimal(items_unit_price[i])
        item_table = {
            'item_name': items_name[i],
            'item_id': items_id[i],
            'quantity': items_quantity[i],
            'unit_price': items_unit_price[i],
            'total_price': total
        }
        items.append(item_table)
        i = i + 1
        grand_total = grand_total + total
    print(items)

    # push the Purchase Order data to the database
    current_time = datetime.datetime.now()
    print(current_time)
    po_info = PurchaseOrder(
        purchase_order_id=po_id,
        shipping_instructions=shipping_inst,
        time_created=current_time,
        total_price=grand_total,
        #person_id = staff_id,
        person_id=staff_info,
        description=description,
        vendor_id=vendor_info,
        quotation_id=quotation)
    po_info.save()

    # push the Purchase Order item data to the database
    purchase_order = PurchaseOrder.objects.get(purchase_order_id=po_id)
    for item in items:
        item_info = Item.objects.get(item_id=item['item_id'])
        po_item_info = PurchaseOrderItem(purchase_order_id=purchase_order,
                                         item_id=item_info,
                                         quantity=item['quantity'],
                                         unit_price=item['unit_price'],
                                         total_price=item['total_price'])
        po_item_info.save()

    #sending email to vendor
    x = PrettyTable()

    x.field_names = [
        "Item ID", "Item Name", "Quantity", "Unit Price", "Total Price"
    ]

    for item in items:
        x.add_row([
            item['item_id'], item['item_name'], item['quantity'],
            item['unit_price'], item['total_price']
        ])

    subject = 'PURCHASE ORDER INFORMATION: ' + po_id
    message = 'This is the Purchase Order Information: \n' + 'Person In Charge: ' + staff_info.person_name + '\n' + 'Ship to:' + staff_info.person_address + '\n' + 'Purchase Order Number: ' + po_id + '\n' + 'Quotation ID: ' + quotation.quotation_id + '\n' + 'Time Issued: ' + str(
        current_time
    ) + '\n' + 'Vendor ID: ' + vendor_id + '\n' + 'Description: ' + description + '\n' + 'Shipping Instructions: ' + shipping_inst + '\n' + str(
        x) + '\n'

    email_from = settings.EMAIL_HOST_USER
    recipient_list = [vendor_info.vendor_email]
    send_mail(subject,
              message,
              '*****@*****.**',
              recipient_list,
              fail_silently=False)

    # info pass to html
    context = {
        'title': 'Purchase Order Details',
        'quotation_id': quotation_id,
        'purchase_order_id': po_id,
        'staff_id': staff_id,
        'vendor_id': vendor_id,
        'shipping_inst': shipping_inst,
        'rows': items,
        #'staff' : staff,
        'staff_info': staff_info,
        'vendor_info': vendor_info,
        'grand_total': grand_total,
        'time_created': current_time,
        'description': description
    }

    return render(request, 'PurchaseOrder/purchaseorderdetails.html', context)
Beispiel #2
0
def purchaseorderupdate(request):

    print(request.body)
    pk = request.GET['po_id']
    purchase_order = PurchaseOrder.objects.get(purchase_order_id=pk)
    items = PurchaseOrderItem.objects.filter(purchase_order_id=pk)
    staff = Person.objects.get(person_id=purchase_order.person_id.person_id)

    context = {
        'title': 'Purchase Order Details',
        'quotation_id': purchase_order.quotation_id.quotation_id,
        'purchase_order_id': pk,
        'shipping_inst': purchase_order.shipping_instructions,
        'rows': items,
        'staff': staff,
        'vendor_info': purchase_order.vendor_id,
        'grand_total': purchase_order.total_price,
        'time_created': purchase_order.time_created,
        'description': purchase_order.description
    }
    # push the Purchase Order data to the database
    current_time = datetime.datetime.now()
    print(current_time)
    po_info = PurchaseOrder(purchase_order_id=po_id,
                            shipping_instructions=shipping_inst,
                            time_created=current_time,
                            total_price=grand_total,
                            person_id=staff,
                            description=description,
                            vendor_id=vendor_info,
                            quotation_id=quotation)
    po_info.save()

    # push the Purchase Order item data to the database
    purchase_order = PurchaseOrder.objects.get(purchase_order_id=po_id)
    for item in items:
        item_info = Item.objects.get(item_id=item['item_id'])
        po_item_info = PurchaseOrderItem(purchase_order_id=purchase_order,
                                         item_id=item_info,
                                         quantity=item['quantity'],
                                         unit_price=item['unit_price'],
                                         total_price=item['total_price'])
        po_item_info.save()

    #sending email to vendor
    x = PrettyTable()

    x.field_names = [
        "Item ID", "Item Name", "Quantity", "Unit Price", "Total Price"
    ]

    for item in items:
        x.add_row([
            item['item_id'], item['item_name'], item['quantity'],
            item['unit_price'], item['total_price']
        ])

    subject = 'PURCHASE ORDER INFORMATION: ' + po_id
    message = 'This is the Purchase Order Information: \n' + 'Person In Charge: ' + staff.person_name + '\n' + 'Ship to:' + staff.person_address + '\n' + 'Purchase Order Number: ' + po_id + '\n' + 'Quotation ID: ' + quotation.quotation_id + '\n' + 'Time Issued: ' + str(
        current_time
    ) + '\n' + 'Vendor ID: ' + vendor_id + '\n' + 'Description: ' + description + '\n' + 'Shipping Instructions: ' + shipping_inst + '\n' + str(
        x) + '\n'

    email_from = settings.EMAIL_HOST_USER
    recipient_list = [
        vendor_info.vendor_email,
    ]
    send_mail(subject, message, email_from, recipient_list)

    # info pass to html
    context = {
        'title': 'Purchase Order Details',
        'quotation_id': quotation_id,
        'purchase_order_id': po_id,
        'vendor_id': vendor_id,
        'shipping_inst': shipping_inst,
        'rows': items,
        'staff': staff,
        'vendor_info': vendor_info,
        'grand_total': grand_total,
        'time_created': current_time,
        'description': description
    }

    return render(request, 'PurchaseOrder/purchaseorderupdate.html', context)