def post(self, request, *args, **kwargs): purchase_dict = ast.literal_eval(request.POST['purchase']) purchase, purchase_created = Purchase.objects.get_or_create(purchase_invoice_number=purchase_dict['purchase_invoice_number']) purchase.purchase_invoice_number = purchase_dict['purchase_invoice_number'] purchase.vendor_invoice_number = purchase_dict['vendor_invoice_number'] purchase.vendor_do_number = purchase_dict['vendor_do_number'] purchase.vendor_invoice_date = datetime.strptime(purchase_dict['vendor_invoice_date'], '%d/%m/%Y') purchase.purchase_invoice_date = datetime.strptime(purchase_dict['purchase_invoice_date'], '%d/%m/%Y') brand = Brand.objects.get(brand=purchase_dict['brand']) purchase.brand = brand vendor = Vendor.objects.get(user__first_name=purchase_dict['vendor_name']) transport = TransportationCompany.objects.get(company_name=purchase_dict['transport']) purchase.vendor = vendor purchase.transportation_company = transport if purchase_dict['discount']: purchase.discount = purchase_dict['discount'] else: purchase.discount = 0 purchase.net_total = purchase_dict['net_total'] purchase.purchase_expense = purchase_dict['purchase_expense'] purchase.grant_total = purchase_dict['grant_total'] vendor_account, vendor_account_created = VendorAccount.objects.get_or_create(vendor=vendor) if vendor_account_created: vendor_account.total_amount = purchase_dict['vendor_amount'] vendor_account.balance = purchase_dict['vendor_amount'] else: if purchase_created: vendor_account.total_amount = vendor_account.total_amount + purchase_dict['vendor_amount'] vendor_account.balance = vendor_account.balance + purchase_dict['vendor_amount'] else: vendor_account.total_amount = vendor_account.total_amount - purchase.vendor_amount + purchase_dict['vendor_amount'] vendor_account.balance = vendor_account.balance - purchase.vendor_amount + purchase_dict['vendor_amount'] vendor_account.save() purchase.vendor_amount = purchase_dict['vendor_amount'] purchase.save() # Save purchase_expense in Expense if Expense.objects.exists(): voucher_no = int(Expense.objects.aggregate(Max('voucher_no'))['voucher_no__max']) + 1 else: voucher_no = 1 if not voucher_no: voucher_no = 1 expense = Expense() expense.created_by = request.user expense.expense_head, created = ExpenseHead.objects.get_or_create(expense_head = 'purchase') expense.date = dt.datetime.now().date().strftime('%Y-%m-%d') expense.voucher_no = voucher_no expense.amount = purchase_dict['purchase_expense'] expense.payment_mode = 'cash' expense.narration = 'By purchase' expense.save() purchase_items = purchase_dict['purchase_items'] deleted_items = purchase_dict['deleted_items'] for p_item in deleted_items: item = Item.objects.get(code = p_item['item_code']) ps_item = PurchaseItem.objects.get(item=item) inventory = Inventory.objects.get(item=item) inventory.quantity = inventory.quantity + ps_item.quantity_purchased inventory.save() ps_item.delete() for purchase_item in purchase_items: item = Item.objects.get(code=purchase_item['item_code']) p_item, item_created = PurchaseItem.objects.get_or_create(item=item, purchase=purchase) inventory, created = Inventory.objects.get_or_create(item=item) if created: inventory.quantity = int(purchase_item['qty_purchased']) else: if purchase_created: inventory.quantity = inventory.quantity + int(purchase_item['qty_purchased']) else: inventory.quantity = inventory.quantity - p_item.quantity_purchased + int(purchase_item['qty_purchased']) inventory.selling_price = purchase_item['selling_price'] inventory.unit_price = purchase_item['unit_price'] inventory.discount_permit_percentage = purchase_item['permit_disc_percent'] inventory.discount_permit_amount = purchase_item['permit_disc_amt'] inventory.vendor = vendor inventory.save() p_item, item_created = PurchaseItem.objects.get_or_create(item=item, purchase=purchase) p_item.purchase = purchase p_item.item = item p_item.quantity_purchased = purchase_item['qty_purchased'] p_item.item_frieght = purchase_item['frieght'] p_item.frieght_per_unit = purchase_item['frieght_unit'] p_item.item_handling = purchase_item['handling'] p_item.handling_per_unit = purchase_item['handling_unit'] p_item.expense = purchase_item['expense'] p_item.expense_per_unit = purchase_item['expense_unit'] p_item.cost_price = purchase_item['cost_price'] p_item.net_amount = purchase_item['net_amount'] p_item.save() res = { 'result': 'Ok', } response = simplejson.dumps(res) status_code = 200 return HttpResponse(response, status = status_code, mimetype="application/json")