public bool UpdateStatus(long receive_id, long user_id) { try { var receive = _entities.receives.Find(receive_id); var isVarifyStatus = receive.is_varified; if (isVarifyStatus == true) { receive.status = "Approved"; receive.approved_by = user_id; receive.updated_date = System.DateTime.Now; int saved = _entities.SaveChanges(); if (saved > 0) { partyJournal.PartyJournalEntry("RECEIVE", receive.party_id ?? 0, receive.amount ?? 0, "Payment Received", receive.approved_by ?? 0, receive.receipt_no); } return(true); } else { return(false); } } catch (Exception) { return(false); } }
public long AddOnlineInvoice(StronglyType.OnlineInvoiceModel onlineInvoice) { try { Int64 OnlineMasterId = 0; var onlineInvoiceMaster = onlineInvoice.OnlineInvoiceMaster; var onlineInvoiceDetails = onlineInvoice.OnlinePaymentProductModels; //Online Invoice Master Save var partyTypePrefix = (from ptype in _entities.party_type join par in _entities.parties on ptype.party_type_id equals par.party_type_id where par.party_id == onlineInvoiceMaster.party_id select new { party_prefix = ptype.party_prefix }).FirstOrDefault(); int InvoiceSerial = _entities.online_invoice_master.Max(rq => (int?)rq.online_invoice_master_id) ?? 0; InvoiceSerial++; var rqStr = InvoiceSerial.ToString().PadLeft(7, '0'); string invoiceNo = "INV-" + partyTypePrefix.party_prefix + "-" + rqStr; onlineInvoiceMaster.online_invoice_no = invoiceNo; onlineInvoiceMaster.created_by = onlineInvoice.OnlineInvoiceMaster.created_by; onlineInvoiceMaster.created_date = DateTime.Now; onlineInvoiceMaster.party_id = onlineInvoice.OnlineInvoiceMaster.party_id; onlineInvoiceMaster.online_invoice_date = DateTime.Now; onlineInvoiceMaster.item_total = onlineInvoiceDetails.Sum(a => a.invoice_quantity); onlineInvoiceMaster.invoice_total = onlineInvoiceDetails.Sum(a => a.invoice_quantity); _entities.online_invoice_master.Add(onlineInvoiceMaster); int i = _entities.SaveChanges(); OnlineMasterId = onlineInvoiceMaster.online_invoice_master_id; if (i > 0) { foreach (var onlinePaymentProductModel in onlineInvoiceDetails) { //invoice details save if (onlinePaymentProductModel.invoice_quantity != 0) { var pro = _entities.products.Find(onlinePaymentProductModel.product_id); var requisitionForCheck = _entities.requisition_details.SingleOrDefault( a => a.requisition_details_id == onlinePaymentProductModel.requisition_details_id); var forCheckIvoice = requisitionForCheck.invoice_quantity; var requisitionD = _entities.requisition_details.SingleOrDefault( a => a.requisition_details_id == onlinePaymentProductModel.requisition_details_id); var invoiceDetails = new online_invoice_details(); invoiceDetails.brand_id = pro.brand_id; invoiceDetails.color_id = onlinePaymentProductModel.color_id; invoiceDetails.product_category_id = pro.product_category_id; invoiceDetails.product_id = pro.product_id; invoiceDetails.product_version_id = onlinePaymentProductModel.product_version_id; invoiceDetails.unit_id = pro.unit_id; invoiceDetails.online_invoice_master_id = OnlineMasterId; invoiceDetails.quantity = onlinePaymentProductModel.invoice_quantity; invoiceDetails.price = onlinePaymentProductModel.price; invoiceDetails.discount = requisitionD.discount; invoiceDetails.price_amount = onlinePaymentProductModel.price * onlinePaymentProductModel.invoice_quantity; invoiceDetails.discount_amount = (requisitionD.discount_amount / requisitionD.quantity) * onlinePaymentProductModel.invoice_quantity; invoiceDetails.line_total = (requisitionD.line_total / requisitionD.quantity) * onlinePaymentProductModel.invoice_quantity; if (requisitionD.promotion_master_id != null) { _entities.online_invoice_details.Add(invoiceDetails); _entities.SaveChanges(); // requisition details update requisitionD.invoice_quantity += onlinePaymentProductModel.invoice_quantity; _entities.SaveChanges(); } //promotion invoice add if (requisitionD.promotion_master_id != null) { var promotion = _entities.promotion_master.Find(requisitionD.promotion_master_id); var promoDetails = _entities.promotion_details.Where( a => a.promotion_master_id == promotion.promotion_master_id).ToList(); if (promotion.promotion_type == "Product") { var tQty = requisitionD.invoice_quantity; if (forCheckIvoice >= promotion.lifting_quantity_for_promotion) { tQty = onlinePaymentProductModel.invoice_quantity; } if (tQty >= promotion.lifting_quantity_for_promotion) { foreach (var productModel in onlineInvoiceDetails) { if (productModel.is_gift == true) { foreach (var promotionDetailse in promoDetails) { if (promotionDetailse.product_id == productModel.product_id) { var actualGiftQuantity = (int)(tQty / promotion.lifting_quantity_for_promotion); var pro1 = _entities.products.Find(productModel.product_id); var requisitionD1 = _entities.requisition_details.SingleOrDefault( a => a.requisition_details_id == productModel.requisition_details_id); var invoiceDetails1 = new online_invoice_details(); invoiceDetails1.brand_id = pro1.brand_id; invoiceDetails1.color_id = productModel.color_id; invoiceDetails1.product_category_id = pro1.product_category_id; invoiceDetails1.product_id = pro1.product_id; invoiceDetails1.product_version_id = productModel.product_version_id; invoiceDetails1.unit_id = pro1.unit_id; invoiceDetails1.online_invoice_master_id = OnlineMasterId; invoiceDetails1.quantity = promotionDetailse.gift_quantity * actualGiftQuantity; invoiceDetails1.price = 0; invoiceDetails1.discount = 0; invoiceDetails1.price_amount = 0; invoiceDetails1.discount_amount = 0; invoiceDetails1.line_total = 0; _entities.online_invoice_details.Add(invoiceDetails1); _entities.SaveChanges(); // requisition details update requisitionD1.invoice_quantity += (promotionDetailse.gift_quantity * actualGiftQuantity); _entities.SaveChanges(); } } } } } } } } } //Requisition Master Update and mapping add foreach (var onlinePaymentProductModel in onlineInvoiceDetails) { if (onlinePaymentProductModel.invoice_quantity != 0) { var findR = _entities.requisition_master.SingleOrDefault(a => a.requisition_master_id == onlinePaymentProductModel.requisition_master_id); if (findR.is_requisition_closed == false) { var listOfD = _entities.requisition_details.Where( a => a.requisition_master_id == findR.requisition_master_id).ToList(); var countInvoiceQuant = listOfD.Where(a => a.is_gift == null).Sum(a => a.quantity); var sumOfIgrid = listOfD.Where(a => a.is_gift == null).Sum(a => a.invoice_quantity); var sumOfRgrid = listOfD.Where(a => a.is_gift == null).Sum(a => a.return_quantity); var nValue = sumOfIgrid + sumOfRgrid; if (nValue == countInvoiceQuant) { findR.invoicable_quantity = countInvoiceQuant; findR.is_requisition_closed = true; } else { findR.invoicable_quantity += onlinePaymentProductModel.invoice_quantity; findR.is_requisition_closed = false; } _entities.SaveChanges(); var check = _entities.online_invoice_requisition_mapping.SingleOrDefault( a => a.requisition_master_id == findR.requisition_master_id && a.online_invoice_master_id == OnlineMasterId); if (check == null) { var mapping = new online_invoice_requisition_mapping { online_invoice_master_id = OnlineMasterId, requisition_master_id = findR.requisition_master_id }; _entities.online_invoice_requisition_mapping.Add(mapping); _entities.SaveChanges(); } } } } //update party journal //For Party Journal //GET ACCOUNT BALANCE FROM PARTY JOURNAL var partyJournal = _entities.party_journal.Where(pj => pj.party_id == onlineInvoice.OnlineInvoiceMaster.party_id) .OrderByDescending(p => p.party_journal_id) .FirstOrDefault(); decimal partyAccountBalance = 0; if (partyJournal != null) { partyAccountBalance = partyJournal.closing_balance ?? 0; } //invoce amount var ttt = _entities.online_invoice_details.Where(a => a.online_invoice_master_id == OnlineMasterId) .ToList(); //CALCULATING INVOICE TOTAL decimal invoiceTotal = 0; invoiceTotal = ttt.Sum(a => a.line_total) ?? 0; //insert in both invoice master and party journal table //ACCOUNT BALANCE decimal accountBalance = 0; accountBalance = invoiceTotal + partyAccountBalance; partyJournalRepository.PartyJournalEntry("INVOICE", onlineInvoice.OnlineInvoiceMaster.party_id ?? 0, invoiceTotal, "Invoice", onlineInvoice.OnlineInvoiceMaster.created_by ?? 0, invoiceNo); } return(OnlineMasterId); } catch (Exception) { throw; } }
// Create New Internal Requisition Cash public long AddInternalRequisition(InternalRequisitionModel objInternalRequisitionModel) { try { var intReqMaster = objInternalRequisitionModel.InternalRequisitionMaster; var internalRequisitionDetailsList = objInternalRequisitionModel.InternalRequisitionDetails; int save = 0; //Auto Number Creator long internalRequisitionSerial = _entities.internal_requisition_master.Max(re => (long?)re.internal_requisition_master_id) ?? 0; internalRequisitionSerial++; var internalRequisitionSerialNo = internalRequisitionSerial.ToString().PadLeft(7, '0'); string intReqNo = "INT-REQ-" + internalRequisitionSerialNo; //Master Table intReqMaster.internal_requisition_no = intReqNo; intReqMaster.from_warehouse_id = objInternalRequisitionModel.InternalRequisitionMaster.from_warehouse_id; intReqMaster.to_department = objInternalRequisitionModel.InternalRequisitionMaster.to_department; intReqMaster.customar_name = objInternalRequisitionModel.InternalRequisitionMaster.customar_name; intReqMaster.mobile_no = objInternalRequisitionModel.InternalRequisitionMaster.mobile_no; intReqMaster.requisition_date = DateTime.Now; intReqMaster.payment_type = objInternalRequisitionModel.InternalRequisitionMaster.payment_type; intReqMaster.pricing = objInternalRequisitionModel.InternalRequisitionMaster.pricing; intReqMaster.remarks = objInternalRequisitionModel.InternalRequisitionMaster.remarks; intReqMaster.requisition_status = "Created"; intReqMaster.total_incentive_amount = internalRequisitionDetailsList.Sum(tin => tin.incentive_amount); intReqMaster.total_amount = objInternalRequisitionModel.InternalRequisitionMaster.total_amount; intReqMaster.created_by = objInternalRequisitionModel.InternalRequisitionMaster.created_by; intReqMaster.created_date = DateTime.Now; _entities.internal_requisition_master.Add(intReqMaster); _entities.SaveChanges(); //Details Table long intReqMasterId = intReqMaster.internal_requisition_master_id; foreach (var item in internalRequisitionDetailsList) { var internalRequisitionDetails = new internal_requisition_details { internal_requisition_master_id = intReqMasterId, product_id = item.product_id, color_id = item.color_id, product_version_id = item.product_version_id, quantity = item.quantity, price = item.price, amount = item.amount, is_gift = item.is_gift, gift_type = item.gift_type, incentive_amount = item.incentive_amount, promotion_master_id = item.promotion_master_id, }; _entities.internal_requisition_details.Add(internalRequisitionDetails); save = _entities.SaveChanges(); } // Delivery Master Table if (save > 0) { var deliveryMaster = new delivery_master(); //Get To Warehouse Id var toWarehouseId = _entities.warehouses.SingleOrDefault( a => a.warehouse_name == "Internal (Cash) Warehouse").warehouse_id; //Get Delivery Party Id var partyId = _entities.warehouses.SingleOrDefault( a => a.warehouse_name == "Internal (Cash) Warehouse").party_id; //Get Party Address var partyAddress = _entities.parties.SingleOrDefault( a => a.party_name == "Internal (Cash)").address; long deliverySerial = _entities.delivery_master.Max(po => (long?)po.delivery_master_id) ?? 0; deliverySerial++; var deliveryStr = deliverySerial.ToString().PadLeft(7, '0'); string deliveryNo = "DN-INT-REQ" + "-" + deliveryStr; deliveryMaster.delivery_no = deliveryNo; deliveryMaster.delivery_date = DateTime.Now; deliveryMaster.party_id = partyId; deliveryMaster.requisition_master_id = intReqMasterId; deliveryMaster.courier_id = 0; deliveryMaster.courier_slip_no = ""; deliveryMaster.delivery_address = partyAddress; deliveryMaster.created_by = objInternalRequisitionModel.InternalRequisitionMaster.created_by; deliveryMaster.created_date = DateTime.Now; deliveryMaster.from_warehouse_id = objInternalRequisitionModel.InternalRequisitionMaster.from_warehouse_id; deliveryMaster.to_warehouse_id = toWarehouseId; deliveryMaster.status = "CASH-RFD"; deliveryMaster.remarks = "DN-INT-REQ"; deliveryMaster.total_amount = objInternalRequisitionModel.InternalRequisitionMaster.total_amount; deliveryMaster.lot_no = ""; deliveryMaster.vehicle_no = "DN-INT-REQ"; deliveryMaster.truck_driver_name = "DN-INT-REQ"; deliveryMaster.truck_driver_mobile = "DN-INT-REQ"; _entities.delivery_master.Add(deliveryMaster); _entities.SaveChanges(); long deliveryMasterId = deliveryMaster.delivery_master_id; // Delivery Details Table foreach (var item in internalRequisitionDetailsList) { var deliveryDetails = new delivery_details() { delivery_master_id = deliveryMasterId, product_id = item.product_id, color_id = item.color_id, product_version_id = item.product_version_id, delivered_quantity = item.quantity, is_gift = item.is_gift, requisition_quantity = item.quantity, unit_price = item.product_id, line_total = item.amount, party_id = partyId, gift_type = item.gift_type, is_live_dummy = false }; _entities.delivery_details.Add(deliveryDetails); int saved = _entities.SaveChanges(); if (saved > 0) { // update inventory InventoryRepository updateInventoty = new InventoryRepository(); var intransitWarehouseId = _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "In Transit").warehouse_id; var masterDelivery = _entities.delivery_master.Find(deliveryMasterId); //'39' virtual in-transit warehouse updateInventoty.UpdateInventory("INT-REQ-DELIVERY", masterDelivery.delivery_no, masterDelivery.from_warehouse_id ?? 0, intransitWarehouseId, item.product_id ?? 0, item.color_id ?? 0, item.product_version_id ?? 0, 1, item.quantity ?? 0, objInternalRequisitionModel.InternalRequisitionMaster.created_by ?? 0); } } //For Party Journal //Get Party Account Balance var partyJournal = _entities.party_journal.Where(pj => pj.party_id == partyId) .OrderByDescending(p => p.party_journal_id) .FirstOrDefault(); decimal partyAccountBalance = 0; if (partyJournal != null) { partyAccountBalance = partyJournal.closing_balance ?? 0; } //Find Invoice Total decimal invoiceTotal = 0; invoiceTotal = objInternalRequisitionModel.InternalRequisitionMaster.total_amount ?? 0; //insert in both invoice master and party journal table //Account Balance decimal accountBalance = 0; accountBalance = invoiceTotal + partyAccountBalance; //Invoice Master Table long InvoiceSerial = _entities.invoice_master.Max(po => (long?)po.invoice_master_id) ?? 0; InvoiceSerial++; var invStr = InvoiceSerial.ToString().PadLeft(7, '0'); string invoiceNo = "INV-" + "INT-REQ" + "-" + invStr; invoice_master insert_invoice = new invoice_master { invoice_no = invoiceNo, invoice_date = System.DateTime.Now, party_id = partyId, requisition_master_id = intReqMasterId, party_type_id = 8, company_id = 0, remarks = objInternalRequisitionModel.InternalRequisitionMaster.remarks, created_by = objInternalRequisitionModel.InternalRequisitionMaster.created_by, created_date = DateTime.Now, incentive_amount = internalRequisitionDetailsList.Sum(tin => tin.incentive_amount), item_total = objInternalRequisitionModel.InternalRequisitionMaster.total_amount, rebate_total = 0, invoice_total = invoiceTotal, account_balance = accountBalance, }; _entities.invoice_master.Add(insert_invoice); _entities.SaveChanges(); long InvoiceMasterId = insert_invoice.invoice_master_id; //Invoice Details Table foreach (var item in internalRequisitionDetailsList) { var getProductCategory = _entities.products.SingleOrDefault(p => p.product_id == item.product_id).product_category_id; var getProductUnit = _entities.products.SingleOrDefault(p => p.product_id == item.product_id).unit_id; var invoiceDetails_insert = new invoice_details { invoice_master_id = InvoiceMasterId, product_category_id = getProductCategory, product_id = item.product_id, color_id = item.color_id, product_version_id = item.product_version_id, unit_id = getProductUnit, price = item.price, quantity = item.quantity, line_total = item.amount, is_gift = item.is_gift, gift_type = item.gift_type, is_live_dummy = false }; _entities.invoice_details.Add(invoiceDetails_insert); _entities.SaveChanges(); } //Party Journal partyJournalRepository.PartyJournalEntry("INVOICE", partyId ?? 0, invoiceTotal, "Invoice", objInternalRequisitionModel.InternalRequisitionMaster.created_by ?? 0, invoiceNo); //Receive Serial Table var serialNumber = objInternalRequisitionModel.ReceiveSerialNoDetails; var intransitWarehouse = _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "In Transit").warehouse_id; //Get Delivery Party Id var partyIdForDelivery = _entities.warehouses.SingleOrDefault( a => a.warehouse_name == "Internal (Cash) Warehouse").party_id; foreach (var item in serialNumber) { receive_serial_no_details receiveSerialNoDetails = _entities.receive_serial_no_details.FirstOrDefault( r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no2); receiveSerialNoDetails.current_warehouse_id = intransitWarehouse; receiveSerialNoDetails.party_id = partyIdForDelivery; receiveSerialNoDetails.deliver_date = DateTime.Now; receiveSerialNoDetails.requisition_id = intReqMasterId; receiveSerialNoDetails.deliver_master_id = deliveryMasterId; receiveSerialNoDetails.is_gift = item.is_gift; receiveSerialNoDetails.gift_type = item.gift_type; receiveSerialNoDetails.is_live_dummy = false; _entities.SaveChanges(); } } return(1); } catch (Exception ex) { return(0); } }