public bool ConfirmDelivery(long delivery_master_id, long user_id)
        {
            try
            {
                //Update Delivery Master
                var deliveryMaster =
                    _entities.delivery_master.SingleOrDefault(dm => dm.delivery_master_id == delivery_master_id);
                deliveryMaster.status        = "EMI-Delivered";
                deliveryMaster.delivered_by  = user_id;
                deliveryMaster.delivery_date = DateTime.Now;
                deliveryMaster.receive_by    = user_id;
                deliveryMaster.receive_date  = DateTime.Now;
                _entities.SaveChanges();
                //Get Delivery Master Id In receive Serial table
                var receiveSerialList =
                    _entities.receive_serial_no_details.Where(rsd => rsd.deliver_master_id == delivery_master_id)
                    .ToList();

                var detailsList = _entities.delivery_details.Where(d => d.delivery_master_id == delivery_master_id).ToList();

                InventoryRepository updateInventoty = new InventoryRepository();

                var intransitWarehouseId =
                    _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "In Transit").warehouse_id;

                //Get To Warehouse Id
                var toWarehouseId =
                    _entities.warehouses.SingleOrDefault(
                        a => a.warehouse_name == "Internal EMI Warehouse").warehouse_id;



                foreach (var item in detailsList)
                {
                    //'39' virtual in-transit warehouse-----------------------------
                    updateInventoty.UpdateInventory("INT-EMI-REQ-CONFIRM", deliveryMaster.delivery_no, intransitWarehouseId,
                                                    toWarehouseId, item.product_id ?? 0, item.color_id ?? 0, item.product_version_id ?? 0,
                                                    item.unit_id ?? 0,
                                                    item.delivered_quantity ?? 0, user_id);
                }

                // Update Receive Serial
                foreach (var item in receiveSerialList)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(rsd => rsd.receive_serial_no_details_id == item.receive_serial_no_details_id);

                    receiveSerial.current_warehouse_id = deliveryMaster.to_warehouse_id;
                    receiveSerial.deliver_date         = DateTime.Now;
                    receiveSerial.sales_status         = true;
                    receiveSerial.sales_date           = DateTime.Now;
                    _entities.SaveChanges();
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        //Update Courier Information
        public bool UpdateDeliveryMethod(delivery_master objUpdateCourier)
        {
            try
            {
                var courierInfo = _entities.delivery_master.Find(objUpdateCourier.delivery_master_id);
                courierInfo.delivery_method_id   = objUpdateCourier.delivery_method_id;
                courierInfo.courier_id           = objUpdateCourier.courier_id;
                courierInfo.delivery_person_name = objUpdateCourier.delivery_person_name;
                courierInfo.delivery_date        = DateTime.Now;
                courierInfo.status = "Delivered";
                _entities.SaveChanges();

                //retrieve data from delivery_details
                var deliveryDetailsList = _entities.delivery_details.Where(d => d.delivery_master_id == objUpdateCourier.delivery_master_id).ToList();
                foreach (var d in deliveryDetailsList)
                {
                    var productId        = d.product_id ?? 0;
                    var colorId          = d.color_id ?? 0;
                    var unitId           = d.unit_id ?? 0;
                    var productVersionId = d.product_version_id ?? 0;
                    var deliveryQty      = d.delivered_quantity ?? 0;
                    var toWarehouse      = courierInfo.to_warehouse_id ?? 0;
                    var userId           = objUpdateCourier.updated_by ?? 0;
                    var updateInventoty  = new InventoryRepository();
                    updateInventoty.UpdateInventory("DELIVERED", courierInfo.delivery_no, 39, toWarehouse, productId, colorId, productVersionId, unitId,
                                                    deliveryQty, userId);
                }

                var receiveSerialNoDetails = _entities.receive_serial_no_details.Where(
                    d => d.deliver_master_id == objUpdateCourier.delivery_master_id).ToList();

                foreach (var item in receiveSerialNoDetails)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no);
                    receiveSerial.current_warehouse_id = courierInfo.to_warehouse_id;
                    _entities.SaveChanges();
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #3
0
        public long RfdDelivery(ToDeliveryModel toDeliveryModel)
        {
            try
            {
                var toDeliveryMaster       = toDeliveryModel.ToDeliveryMasterData;
                var toDeliveryDetailsList  = toDeliveryModel.ToDeliveryDetailsList;
                var receiveSerialNoDetails = toDeliveryModel.ReceiveSerialNoDetails;

                var toDeliveryObject = _entities.to_delivery_master.Find(toDeliveryMaster.to_delivery_master_id);
                toDeliveryObject.status                    = "Delivered";
                toDeliveryObject.delivery_method           = toDeliveryMaster.delivery_method;
                toDeliveryObject.courier_id                = toDeliveryMaster.courier_id;
                toDeliveryObject.to_logistics_delivered_by = toDeliveryMaster.to_logistics_delivered_by;
                _entities.SaveChanges();

                foreach (var item in toDeliveryDetailsList)
                {
                    InventoryRepository updateInventoty = new InventoryRepository();

                    //'39' virtual in-transit warehouse-----------------------------
                    updateInventoty.UpdateInventory("TO DELIVERED ", toDeliveryMaster.to_delivery_no, 39, toDeliveryMaster.to_warehouse_id ?? 0, item.product_id ?? 0, item.color_id ?? 0, item.product_version_id ?? 0, item.unit_id ?? 0,
                                                    item.delivered_quantity ?? 0, toDeliveryMaster.created_by ?? 0);
                }


                foreach (var item in receiveSerialNoDetails)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no);

                    receiveSerial.current_warehouse_id = toDeliveryMaster.to_warehouse_id;
                    receiveSerial.deliver_date         = DateTime.Now;
                    _entities.SaveChanges();
                }
                return(1);
            }
            catch (Exception)
            {
                return(0);
            }
        }
        public bool CancelDelivery(long delivery_master_id, long user_id)
        {
            try
            {
                //Cancel Delivery Master
                var deliveryMaster =
                    _entities.delivery_master.SingleOrDefault(dm => dm.delivery_master_id == delivery_master_id);

                deliveryMaster.status       = "Cancel";
                deliveryMaster.updated_by   = user_id;
                deliveryMaster.updated_date = DateTime.Now;
                _entities.SaveChanges();

                //Cancel Internal Requisition Master

                var intReqMaster =
                    _entities.internal_requisition_master.SingleOrDefault(
                        inrm => inrm.internal_requisition_master_id == deliveryMaster.requisition_master_id);
                intReqMaster.requisition_status = "Cancel";
                _entities.SaveChanges();

                var intransitWarehouseId =
                    _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "In Transit").warehouse_id;

                //Cancel Inventory
                var details =
                    _entities.delivery_details.Where(a => a.delivery_master_id == delivery_master_id).ToList();
                foreach (var deliveryDetails in details)
                {
                    var updateInventoty = new InventoryRepository();

                    //From warehouse== Internal Requisition To warehouse=Central
                    updateInventoty.UpdateInventory("INT-EMI-REQ-CANCEL", deliveryMaster.delivery_no, intransitWarehouseId, deliveryMaster.from_warehouse_id ?? 0, deliveryDetails.product_id ?? 0, deliveryDetails.color_id ?? 0, deliveryDetails.product_version_id ?? 0, 1,
                                                    deliveryDetails.delivered_quantity ?? 0, user_id);
                }



                //Cancel Receive Serial Details
                var serialNo =
                    _entities.receive_serial_no_details.Where(a => a.deliver_master_id == deliveryMaster.delivery_master_id)
                    .ToList();
                //Get Central warehouse
                var centralWarehouseId =
                    _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "WE Central Warehouse").warehouse_id;

                foreach (var receiveSerialNo in serialNo)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.receive_serial_no_details_id == receiveSerialNo.receive_serial_no_details_id);

                    receiveSerial.current_warehouse_id = centralWarehouseId;
                    receiveSerial.party_id             = 0;
                    receiveSerial.deliver_date         = null;
                    receiveSerial.sales_status         = false;
                    receiveSerial.sales_date           = null;
                    receiveSerial.is_gift           = false;
                    receiveSerial.gift_type         = "";
                    receiveSerial.deliver_master_id = 0;
                    receiveSerial.requisition_id    = 0;

                    _entities.SaveChanges();
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public long AddInternalEmiRequisition(InternalEmiRequisitionModel internalEmiRequisitionModel)
        {
            try
            {
                var internalRequisitionMasterData  = internalEmiRequisitionModel.InternalRequisitionMaster;
                var internalRequisitionDetailsList = internalEmiRequisitionModel.InternalRequisitionDetails;
                var receiveSerialNoDetailsList     = internalEmiRequisitionModel.ReceiveSerialNoDetails;
                var promotionDetailsList           = internalEmiRequisitionModel.PromotionDetails;
                var installmentDetails             = internalEmiRequisitionModel.InstallmentDetails;

                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-EMI-REQ-" + internalRequisitionSerialNo;

                //Master Table
                internalRequisitionMasterData.internal_requisition_no = intReqNo;
                internalRequisitionMasterData.from_warehouse_id       = internalEmiRequisitionModel.InternalRequisitionMaster.from_warehouse_id;
                internalRequisitionMasterData.to_department           = internalEmiRequisitionModel.InternalRequisitionMaster.to_department;
                internalRequisitionMasterData.customar_name           = internalEmiRequisitionModel.InternalRequisitionMaster.customar_name;
                internalRequisitionMasterData.mobile_no              = internalEmiRequisitionModel.InternalRequisitionMaster.mobile_no;
                internalRequisitionMasterData.requisition_date       = DateTime.Now;
                internalRequisitionMasterData.payment_type           = "EMI";
                internalRequisitionMasterData.pricing                = internalEmiRequisitionModel.InternalRequisitionMaster.pricing;
                internalRequisitionMasterData.remarks                = internalEmiRequisitionModel.InternalRequisitionMaster.remarks;
                internalRequisitionMasterData.requisition_status     = "Created";
                internalRequisitionMasterData.total_incentive_amount = internalRequisitionDetailsList.Sum(tin => tin.incentive_amount) ?? 0;
                internalRequisitionMasterData.total_amount           = internalEmiRequisitionModel.InternalRequisitionMaster.total_amount;
                internalRequisitionMasterData.created_by             = internalEmiRequisitionModel.InternalRequisitionMaster.created_by;
                internalRequisitionMasterData.created_date           = DateTime.Now;
                _entities.internal_requisition_master.Add(internalRequisitionMasterData);
                _entities.SaveChanges();

                //Details Table
                long internalRequisitionMasterId = internalRequisitionMasterData.internal_requisition_master_id;
                foreach (var item in internalRequisitionDetailsList)
                {
                    var internalRequisitionDetails = new internal_requisition_details
                    {
                        internal_requisition_master_id = internalRequisitionMasterId,
                        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             = false,
                        incentive_amount    = item.incentive_amount,
                        promotion_master_id = item.promotion_master_id,
                    };
                    _entities.internal_requisition_details.Add(internalRequisitionDetails);
                    save = _entities.SaveChanges();
                }

                //for promotion List---
                foreach (var item in promotionDetailsList)
                {
                    var internalRequisitionDetails = new internal_requisition_details
                    {
                        internal_requisition_master_id = internalRequisitionMasterId,
                        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             = true,
                        gift_type           = "Promotional",
                        incentive_amount    = item.incentive_amount,
                        promotion_master_id = item.promotion_master_id,
                    };
                    _entities.internal_requisition_details.Add(internalRequisitionDetails);
                    save = _entities.SaveChanges();
                }

                if (save > 0)
                {
                    var deliveryMaster = new delivery_master();


                    //Get To Warehouse Id
                    var toWarehouseId =
                        _entities.warehouses.SingleOrDefault(
                            a => a.warehouse_name == "Internal EMI Warehouse").warehouse_id;
                    //Get Delivery Party Id
                    var partyId = _entities.warehouses.SingleOrDefault(
                        a => a.warehouse_name == "Internal EMI Warehouse").party_id;
                    //Get Party Address
                    var partyAddress = _entities.parties.SingleOrDefault(
                        a => a.party_name == "Internal EMI").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-EMI-REQ" + "-" + deliveryStr;
                    deliveryMaster.delivery_no           = deliveryNo;
                    deliveryMaster.delivery_date         = DateTime.Now;
                    deliveryMaster.party_id              = partyId;
                    deliveryMaster.requisition_master_id = internalRequisitionMasterId;
                    deliveryMaster.courier_id            = 0;
                    deliveryMaster.courier_slip_no       = "";
                    deliveryMaster.delivery_address      = partyAddress;
                    deliveryMaster.created_by            = internalEmiRequisitionModel.InternalRequisitionMaster.created_by;
                    deliveryMaster.created_date          = DateTime.Now;
                    deliveryMaster.from_warehouse_id     = internalEmiRequisitionModel.InternalRequisitionMaster.from_warehouse_id;
                    deliveryMaster.to_warehouse_id       = toWarehouseId;
                    deliveryMaster.status              = "EMI-RFD";
                    deliveryMaster.remarks             = "DN-INT-EMI-REQ";
                    deliveryMaster.total_amount        = internalEmiRequisitionModel.InternalRequisitionMaster.total_amount;
                    deliveryMaster.lot_no              = "";
                    deliveryMaster.vehicle_no          = "DN-INT-EMI-REQ";
                    deliveryMaster.truck_driver_name   = "DN-INT-EMI-REQ";
                    deliveryMaster.truck_driver_mobile = "DN-INT-EMI-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-EMI-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, internalEmiRequisitionModel.InternalRequisitionMaster.created_by ?? 0);
                        }
                    }

                    foreach (var item in promotionDetailsList)
                    {
                        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-EMI-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, internalEmiRequisitionModel.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 = internalEmiRequisitionModel.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-EMI-REQ" + "-" + invStr;

                    invoice_master insert_invoice = new invoice_master
                    {
                        invoice_no            = invoiceNo,
                        invoice_date          = System.DateTime.Now,
                        party_id              = partyId,
                        requisition_master_id = internalRequisitionMasterId,
                        company_id            = 0,
                        remarks          = internalEmiRequisitionModel.InternalRequisitionMaster.remarks,
                        created_by       = internalEmiRequisitionModel.InternalRequisitionMaster.created_by,
                        created_date     = DateTime.Now,
                        incentive_amount = internalRequisitionDetailsList.Sum(tin => tin.incentive_amount),
                        item_total       = internalEmiRequisitionModel.InternalRequisitionMaster.total_amount,
                        party_type_id    = 11,
                        rebate_total     = 0,
                        invoice_total    = 0,
                        account_balance  = 0,
                    };

                    _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       = false,
                            is_live_dummy = false
                        };

                        _entities.invoice_details.Add(invoiceDetails_insert);
                        _entities.SaveChanges();
                    }

                    //Invoice Details Table
                    foreach (var item in promotionDetailsList)
                    {
                        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       = true,
                            is_live_dummy = false
                        };

                        _entities.invoice_details.Add(invoiceDetails_insert);
                        _entities.SaveChanges();
                    }


                    //Party Journal
                    // partyJournalRepository.PartyJournalEntry("INVOICE", partyId ?? 0, 0, "Invoice", internalEmiRequisitionModel.InternalRequisitionMaster.created_by ?? 0, invoiceNo);


                    //Receive Serial Table

                    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 EMI Warehouse").party_id;


                    foreach (var item in receiveSerialNoDetailsList)
                    {
                        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       = internalRequisitionMasterId;
                        receiveSerialNoDetails.deliver_master_id    = deliveryMasterId;
                        receiveSerialNoDetails.is_gift       = item.is_gift;
                        receiveSerialNoDetails.is_live_dummy = false;
                        _entities.SaveChanges();
                    }

                    foreach (var item in installmentDetails)
                    {
                        var installmentDetailsList = new installment_details
                        {
                            internal_requisition_master_id = internalRequisitionMasterId,
                            installment_no     = item.installment_no,
                            installment_date   = item.installment_date,
                            installment_amount = item.installment_amount
                        };
                        _entities.installment_details.Add(installmentDetailsList);
                        save = _entities.SaveChanges();
                    }
                }
                return(1);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #6
0
        public long CancelToDelivery(ToDeliveryModel toDeliveryModel)
        {
            try
            {
                var toDeliveryMaster       = toDeliveryModel.ToDeliveryMasterData;
                var toDeliveryDetailsList  = toDeliveryModel.ToDeliveryDetailsList;
                var receiveSerialNoDetails = toDeliveryModel.ReceiveSerialNoDetails;

                var toDeliveryObject = _entities.to_delivery_master.Find(toDeliveryMaster.to_delivery_master_id);
                toDeliveryObject.status     = "Canceled";
                toDeliveryObject.is_active  = false;
                toDeliveryObject.is_deleted = true;
                _entities.SaveChanges();

                foreach (var item in toDeliveryDetailsList)
                {
                    var toDeliveryDetails = new to_delivery_details();
                    toDeliveryDetails.delivered_quantity = item.delivered_quantity;

                    var transferOrderDetailsData = _entities.transfer_order_details.Where(t => t.transfer_order_master_id == toDeliveryObject.transfer_order_master_id).ToList();

                    var fullReturn = true;

                    foreach (var todItem in transferOrderDetailsData)
                    {
                        if (todItem.product_id == item.product_id && todItem.color_id == item.color_id && todItem.product_version_id == item.product_version_id)
                        {
                            todItem.transfered_quantity -= item.delivered_quantity;
                            _entities.SaveChanges();
                            if (todItem.transfered_quantity != 0)
                            {
                                fullReturn = false;
                            }
                        }
                    }
                    if (fullReturn)
                    {
                        var xxx = _entities.transfer_order_master.Find(toDeliveryObject.transfer_order_master_id);
                        xxx.status = "Created";
                        _entities.SaveChanges();
                        InventoryRepository updateInventoty = new InventoryRepository();

                        //'39' virtual in-transit warehouse-----------------------------
                        updateInventoty.UpdateInventory("TO DELIVERY CANCEL", toDeliveryMaster.to_delivery_no, 39, toDeliveryMaster.from_warehouse_id ?? 0, item.product_id ?? 0, item.color_id ?? 0, item.product_version_id ?? 0, item.unit_id ?? 0,
                                                        item.delivered_quantity ?? 0, toDeliveryMaster.created_by ?? 0);
                    }
                    else
                    {
                        var xxx = _entities.transfer_order_master.Find(toDeliveryObject.transfer_order_master_id);
                        xxx.status = "Partially Delivered";
                        _entities.SaveChanges();
                        InventoryRepository updateInventoty = new InventoryRepository();

                        //'39' virtual in-transit warehouse-----------------------------
                        updateInventoty.UpdateInventory("TO DELIVERY CANCEL", toDeliveryMaster.to_delivery_no, 39, toDeliveryMaster.from_warehouse_id ?? 0, item.product_id ?? 0, item.color_id ?? 0, item.product_version_id ?? 0, item.unit_id ?? 0,
                                                        item.delivered_quantity ?? 0, toDeliveryMaster.created_by ?? 0);
                    }
                }


                foreach (var item in receiveSerialNoDetails)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no);

                    receiveSerial.current_warehouse_id = toDeliveryMaster.from_warehouse_id;
                    receiveSerial.deliver_date         = null;
                    receiveSerial.to_deliver_master_id = null;
                    _entities.SaveChanges();
                }
                return(1);
            }
            catch (Exception)
            {
                return(0);
            }
        }
Example #7
0
        public long AddToDelivery(ToDeliveryModel toDeliveryModel)
        {
            try
            {
                var toDeliveryMaster       = toDeliveryModel.ToDeliveryMasterData;
                var toDeliveryDetailsList  = toDeliveryModel.ToDeliveryDetailsList;
                var receiveSerialNoDetails = toDeliveryModel.ReceiveSerialNoDetails;

                // generate order_no
                long toDeliverySerial = _entities.to_delivery_master.Max(po => (long?)po.to_delivery_master_id) ?? 0;

                toDeliverySerial++;
                var toDeliveryStr = toDeliverySerial.ToString().PadLeft(7, '0');

                string toDeliveryNo = "TO-DN" + "-" + toDeliveryStr;
                toDeliveryMaster.to_delivery_no           = toDeliveryNo;
                toDeliveryMaster.to_delivery_date         = DateTime.Now;
                toDeliveryMaster.transfer_order_master_id = toDeliveryModel.ToDeliveryMasterData.transfer_order_master_id;
                toDeliveryMaster.courier_id        = toDeliveryModel.ToDeliveryMasterData.courier_id;
                toDeliveryMaster.courier_slip_no   = toDeliveryModel.ToDeliveryMasterData.courier_slip_no;
                toDeliveryMaster.from_warehouse_id = toDeliveryModel.ToDeliveryMasterData.from_warehouse_id;
                toDeliveryMaster.to_warehouse_id   = toDeliveryModel.ToDeliveryMasterData.to_warehouse_id;
                toDeliveryMaster.remarks           = toDeliveryModel.ToDeliveryMasterData.remarks;
                toDeliveryMaster.status            = "RFD";
                toDeliveryMaster.created_by        = toDeliveryModel.ToDeliveryMasterData.created_by;
                toDeliveryMaster.created_date      = DateTime.Now;
                toDeliveryMaster.updated_by        = toDeliveryModel.ToDeliveryMasterData.updated_by;
                toDeliveryMaster.updated_date      = DateTime.Now;
                toDeliveryMaster.is_active         = true;
                toDeliveryMaster.is_deleted        = false;

                _entities.to_delivery_master.Add(toDeliveryMaster);
                _entities.SaveChanges();

                long toDeliveryMasterId = toDeliveryMaster.to_delivery_master_id;

                var transferOrderTotalQty = 0;
                var deliveredTotalQty     = 0;

                foreach (var item in toDeliveryDetailsList)
                {
                    var toDeliveryDetails = new to_delivery_details();

                    toDeliveryDetails.to_delivery_master_id = toDeliveryMasterId;
                    toDeliveryDetails.product_id            = item.product_id;
                    toDeliveryDetails.color_id           = item.color_id;
                    toDeliveryDetails.product_version_id = item.product_version_id;
                    toDeliveryDetails.unit_id            = item.unit_id;
                    toDeliveryDetails.to_quantity        = item.to_quantity;
                    toDeliveryDetails.delivered_quantity = item.delivered_quantity;


                    if (toDeliveryDetails.delivered_quantity > 0) //maruf
                    {
                        _entities.to_delivery_details.Add(toDeliveryDetails);
                    }

                    long saved = _entities.SaveChanges();

                    if (saved > 0)
                    {
                        // update inventory
                        InventoryRepository updateInventoty = new InventoryRepository();

                        //'39' virtual in-transit warehouse-----------------------------
                        updateInventoty.UpdateInventory("TO RFD", toDeliveryMaster.to_delivery_no, toDeliveryMaster.from_warehouse_id ?? 0, 39, toDeliveryDetails.product_id ?? 0, toDeliveryDetails.color_id ?? 0, toDeliveryDetails.product_version_id ?? 0, toDeliveryDetails.unit_id ?? 0,
                                                        toDeliveryDetails.delivered_quantity ?? 0, toDeliveryMaster.created_by ?? 0);
                    }
                    long transferOrderDetailsId = item.transfer_order_details_id;

                    transfer_order_details transferOrderDetails = _entities.transfer_order_details.Find(transferOrderDetailsId);

                    // Maruf: updating paramenters to check delivery status
                    transferOrderDetails.transfered_quantity += item.delivered_quantity;
                    transferOrderTotalQty += toDeliveryDetails.to_quantity ?? 0;
                    deliveredTotalQty     += toDeliveryDetails.delivered_quantity ?? 0;
                    _entities.SaveChanges();
                }
                // maruf: updating delivery status 19.Oct.2016
                var transferOrderMaster = _entities.transfer_order_master.FirstOrDefault(r => r.transfer_order_master_id == toDeliveryModel.ToDeliveryMasterData.transfer_order_master_id);
                transferOrderMaster.status = (deliveredTotalQty >= transferOrderTotalQty) ? "Delivered" : "Partially Delivered";
                _entities.SaveChanges();


                foreach (var item in receiveSerialNoDetails)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no);

                    receiveSerial.current_warehouse_id = 39;
                    receiveSerial.deliver_date         = DateTime.Now;
                    receiveSerial.to_deliver_master_id = toDeliveryMaster.to_delivery_master_id;
                    _entities.SaveChanges();
                }
                return(1);
            }
            catch (Exception)
            {
                return(0);
            }
        }
Example #8
0
        public bool CancelDelivery(long delivery_master_id, long user_id)
        {
            try
            {
                //Cancel Delivery Master
                var deliveryMaster =
                    _entities.delivery_master.SingleOrDefault(dm => dm.delivery_master_id == delivery_master_id);

                deliveryMaster.status       = "Cancel";
                deliveryMaster.updated_by   = user_id;
                deliveryMaster.updated_date = DateTime.Now;
                _entities.SaveChanges();

                //Cancel Internal Requisition Master

                var intReqMaster =
                    _entities.internal_requisition_master.SingleOrDefault(
                        inrm => inrm.internal_requisition_master_id == deliveryMaster.requisition_master_id);
                intReqMaster.requisition_status = "Cancel";
                _entities.SaveChanges();

                //Cancel Invoice Master

                var invoiceMaster =
                    _entities.invoice_master.SingleOrDefault(
                        im => im.requisition_master_id == intReqMaster.internal_requisition_master_id);
                invoiceMaster.is_active    = false;
                invoiceMaster.is_deleted   = true;
                invoiceMaster.updated_by   = user_id;
                invoiceMaster.updated_date = DateTime.Now;
                _entities.SaveChanges();

                // Get Intransit Warehouse
                var intransitWarehouseId =
                    _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "In Transit").warehouse_id;
                //Cancel Inventory
                var details =
                    _entities.delivery_details.Where(a => a.delivery_master_id == delivery_master_id).ToList();
                foreach (var deliveryDetails in details)
                {
                    var updateInventoty = new InventoryRepository();

                    //From warehouse== Internal Requisition To warehouse=Central
                    updateInventoty.UpdateInventory("INT-REQ-CANCEL", deliveryMaster.delivery_no, intransitWarehouseId, deliveryMaster.from_warehouse_id ?? 0, deliveryDetails.product_id ?? 0, deliveryDetails.color_id ?? 0, deliveryDetails.product_version_id ?? 0, 1,
                                                    deliveryDetails.delivered_quantity ?? 0, user_id);
                }

                //Cancel Party Journal

                var partyJournal =
                    _entities.party_journal.Where(pj => pj.party_id == deliveryMaster.party_id)
                    .OrderByDescending(p => p.party_journal_id)
                    .FirstOrDefault();
                decimal partyAccountBalance = 0;
                if (partyJournal != null)
                {
                    partyAccountBalance = partyJournal.closing_balance ?? 0;
                }

                //calculate Invoice total

                decimal?invoiceTotal =
                    _entities.internal_requisition_master.SingleOrDefault(a => a.internal_requisition_master_id == deliveryMaster.requisition_master_id).total_amount;


                partyJournalRepository.PartyJournalEntry("RETURN_INVOICE", deliveryMaster.party_id ?? 0, invoiceTotal ?? 0, "Cancel", user_id, intReqMaster.internal_requisition_no);

                //Cancel Receive Serial Details
                var serialNo =
                    _entities.receive_serial_no_details.Where(a => a.deliver_master_id == deliveryMaster.delivery_master_id)
                    .ToList();

                //Get Delivery From Warehouse
                var deliveryMasterFromWarehouse =
                    _entities.delivery_master.SingleOrDefault(dm => dm.delivery_master_id == delivery_master_id)
                    .from_warehouse_id;
                //Get Central warehouse
                //var centralWarehouseId =
                //              _entities.warehouses.SingleOrDefault(k => k.warehouse_name == "WE Central Warehouse").warehouse_id;

                foreach (var receiveSerialNo in serialNo)
                {
                    receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.receive_serial_no_details_id == receiveSerialNo.receive_serial_no_details_id);

                    receiveSerial.current_warehouse_id = deliveryMasterFromWarehouse;
                    receiveSerial.party_id             = 0;
                    receiveSerial.deliver_date         = null;
                    receiveSerial.sales_status         = false;
                    receiveSerial.sales_date           = null;
                    receiveSerial.is_gift           = false;
                    receiveSerial.gift_type         = "";
                    receiveSerial.deliver_master_id = 0;
                    receiveSerial.requisition_id    = 0;

                    _entities.SaveChanges();
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #9
0
        public long AddGrn(GrnModel grnModel)
        {
            try
            {
                var  grnMaster              = grnModel.GrnMasterData;
                var  grnDetailsList         = grnModel.GrnDetailsList;
                var  receiveSerialNoDetails = grnModel.ReceiveSerialNoDetails;
                bool isDuplicateImei        = false;

                foreach (var item in receiveSerialNoDetails)
                {
                    long imeiForDuplicateSearch = item.imei_no ?? 0;

                    var xxx = _entities.receive_serial_no_details.Where(r => r.imei_no == imeiForDuplicateSearch).ToList();
                    if (xxx.Count > 0)
                    {
                        isDuplicateImei = true;
                    }
                }

                if (!isDuplicateImei)
                {
                    // generate order_no
                    long grnSerial = _entities.grn_master.Max(po => (long?)po.grn_master_id) ?? 0;
                    grnSerial++;
                    var grnStr = grnSerial.ToString().PadLeft(7, '0');

                    // SAVING GRN MASTER
                    string grnNo = "GRN-" + grnStr;
                    grnMaster.supplier_id = grnModel.GrnMasterData.supplier_id;
                    grnMaster.total_amount_including_vattax = grnModel.GrnMasterData.total_amount_including_vattax;
                    grnMaster.status     = grnModel.GrnMasterData.status;
                    grnMaster.company_id = grnModel.GrnMasterData.company_id;
                    grnMaster.grn_date   = grnModel.GrnMasterData.grn_date;
                    grnMaster.purchase_order_master_id = grnModel.GrnMasterData.purchase_order_master_id;
                    grnMaster.vat_total    = grnModel.GrnMasterData.vat_total;
                    grnMaster.warehouse_id = grnModel.GrnMasterData.warehouse_id;
                    grnMaster.created_by   = grnModel.GrnMasterData.created_by;
                    grnMaster.created_date = DateTime.Now;
                    grnMaster.updated_by   = grnModel.GrnMasterData.updated_by;
                    grnMaster.updated_date = DateTime.Now;
                    grnMaster.remarks      = grnModel.GrnMasterData.remarks;
                    grnMaster.lot_no       = grnModel.GrnMasterData.lot_no;
                    grnMaster.lc_id        = 0;
                    grnMaster.grn_no       = grnNo;
                    grnMaster.tax_total    = grnModel.GrnMasterData.tax_total;
                    grnMaster.total_amount_without_vattax = grnModel.GrnMasterData.total_amount_without_vattax;
                    grnMaster.mrr_status = false;

                    _entities.grn_master.Add(grnMaster);
                    _entities.SaveChanges();

                    // Maruf: 28.Feb.2016: Update CiPl received = true
                    //var ciPlMaster = _entities.ci_pl_master.Find(grnModel.GrnMasterData.purchase_order_master_id);
                    var ciPlMaster = _entities.ci_pl_master.FirstOrDefault(c => c.purchase_order_master_id == grnModel.GrnMasterData.purchase_order_master_id);
                    ciPlMaster.is_received = true;
                    _entities.SaveChanges();

                    long grnMasterId = grnMaster.grn_master_id;
                    foreach (var item in grnDetailsList)
                    {
                        var grnDetails = new grn_details
                        {
                            product_id         = item.product_id,
                            grn_master_id      = grnMasterId,
                            unit_id            = item.unit_id,
                            unit_price         = item.unit_price,
                            pi_quantity        = item.pi_quantity,
                            amount             = item.amount,
                            brand_id           = item.brand_id,
                            color_id           = item.color_id,
                            product_version_id = item.product_version_id,
                            receive_quantity   = item.receive_quantity,
                            vat_amount         = item.vat_amount,
                            tax_amount         = item.tax_amount,
                            line_total         = item.line_total,
                            size_id            = item.size_id,
                            vat_pcnt           = item.vat_pcnt,
                            tax_pcnt           = item.tax_pcnt
                        };

                        _entities.grn_details.Add(grnDetails);
                        // _entities.SaveChanges();
                        // kiron 04.09.2016
                        long saved = _entities.SaveChanges();
                        if (saved > 0)
                        {
                            // update inventory
                            InventoryRepository updateInventoty = new InventoryRepository();

                            // Maruf: 04.Apr.2017: move product from purchase(29) WH to GRN(4) WH; it will move to central after MRR process
                            updateInventoty.UpdateInventory("GRN", grnMaster.grn_no, 29,
                                                            4, grnDetails.product_id ?? 0, grnDetails.color_id ?? 0, grnDetails.product_version_id ?? 0, grnDetails.unit_id ?? 0,
                                                            grnDetails.receive_quantity ?? 0, grnMaster.created_by ?? 0);
                        }
                        long purchaseOrderDetailsId      = item.purchase_order_details_id;
                        purchase_order_details poDetails = _entities.purchase_order_details.Find(purchaseOrderDetailsId);
                        poDetails.receive_qty += item.receive_quantity;
                        _entities.SaveChanges();
                    }

                    foreach (var item in receiveSerialNoDetails)
                    {
                        int c = 0;
                        var receiveSerialNoDetailsData = new receive_serial_no_details
                        {
                            product_id            = item.product_id,
                            grn_master_id         = grnMasterId,
                            brand_id              = item.brand_id,
                            color_id              = item.color_id,
                            product_version_id    = item.product_version_id,
                            imei_no               = item.imei_no,
                            imei_no2              = item.imei_no2,
                            received_warehouse_id = 4, // 4-GRN WH; will be moved to central after MRR
                            current_warehouse_id  = 4, // 4-GRN WH; will be moved to central after MRR
                            received_date         = item.received_date,
                            requisition_id        = 0,
                            deliver_master_id     = 0,
                            sales_status          = false,
                            price_protected       = false,
                            carton_no             = item.carton_no
                        };
                        _entities.receive_serial_no_details.Add(receiveSerialNoDetailsData);
                        c++;
                        if (c == 100)
                        {
                            c = 0;
                            _entities.SaveChanges();
                        }
                    }
                    _entities.SaveChanges();
                    return(1);
                }


                return(0);
            }
            catch (Exception)
            {
                return(0);
            }
        }
        public long AddDelivery(DeliveryModel deliveryModel)
        {
            try
            {
                var  deliveryMaster         = deliveryModel.DeliveryMasterData;
                var  deliveryDetailsList    = deliveryModel.DeliveryDetailsList;
                var  receiveSerialNoDetails = deliveryModel.ReceiveSerialNoDetails;
                long counter = 0;

                //Get Party type Prefix by party Id :Kiron:27/10/2016

                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 == deliveryMaster.party_id
                                       select new
                {
                    party_prefix = ptype.party_prefix
                }).FirstOrDefault();

                // IMEI Validity Check
                foreach (var item in receiveSerialNoDetails)
                {
                    long imeiForDuplicateSearch = item.imei_no ?? 0;
                    var  xxx = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == imeiForDuplicateSearch || r.imei_no2 == imeiForDuplicateSearch);

                    var versionId = deliveryDetailsList.FirstOrDefault(d => d.product_id == xxx.product_id && d.color_id == xxx.color_id).product_version_id;
                    // check if imei valid
                    if (xxx == null)
                    {
                        return(2);
                    }
                    if (xxx.product_id != item.product_id || xxx.color_id != item.color_id || xxx.product_version_id != versionId)
                    {
                        return(3);
                    }
                    // check if imei already delivered
                    if (xxx.deliver_master_id != 0 && xxx.deliver_master_id != null)
                    {
                        counter++;
                    }
                }

                if (counter == 0)
                {
                    // generate order_no
                    long deliverySerial = _entities.delivery_master.Max(po => (long?)po.delivery_master_id) ?? 0;

                    deliverySerial++;
                    var deliveryStr = deliverySerial.ToString().PadLeft(7, '0');

                    //string orderNo = "ORD/" + DateTime.Now.Year + "/" + poSerial;
                    string deliveryNo = "DN-" + partyTypePrefix.party_prefix + "-" + deliveryStr;
                    deliveryMaster.delivery_no           = deliveryNo;
                    deliveryMaster.delivery_date         = deliveryModel.DeliveryMasterData.delivery_date;
                    deliveryMaster.party_id              = deliveryModel.DeliveryMasterData.party_id;
                    deliveryMaster.requisition_master_id = deliveryModel.DeliveryMasterData.requisition_master_id;
                    deliveryMaster.courier_id            = deliveryModel.DeliveryMasterData.courier_id;
                    deliveryMaster.company_id            = deliveryModel.DeliveryMasterData.company_id;
                    deliveryMaster.courier_slip_no       = deliveryModel.DeliveryMasterData.courier_slip_no;
                    deliveryMaster.delivery_address      = deliveryModel.DeliveryMasterData.delivery_address;
                    deliveryMaster.delivered_by          = deliveryModel.DeliveryMasterData.delivered_by;
                    deliveryMaster.from_warehouse_id     = deliveryModel.DeliveryMasterData.from_warehouse_id;
                    deliveryMaster.to_warehouse_id       = deliveryModel.DeliveryMasterData.to_warehouse_id;
                    deliveryMaster.status              = "RFD";
                    deliveryMaster.remarks             = deliveryModel.DeliveryMasterData.remarks;
                    deliveryMaster.total_amount        = deliveryModel.DeliveryMasterData.total_amount;
                    deliveryMaster.lot_no              = deliveryModel.DeliveryMasterData.lot_no;
                    deliveryMaster.vehicle_no          = deliveryModel.DeliveryMasterData.vehicle_no;
                    deliveryMaster.truck_driver_name   = deliveryModel.DeliveryMasterData.truck_driver_name;
                    deliveryMaster.truck_driver_mobile = deliveryModel.DeliveryMasterData.truck_driver_mobile;

                    _entities.delivery_master.Add(deliveryMaster);
                    _entities.SaveChanges();
                    long deliveryMasterId    = deliveryMaster.delivery_master_id;
                    var  requisitionTotalQty = 0;
                    var  deliveryTotalQty    = 0;


                    foreach (var item in deliveryDetailsList)
                    {
                        int liftinQuantity  = 0;
                        var deliveryDetails = new delivery_details();

                        if (item.is_gift == false || item.is_gift == null)
                        {
                            deliveryDetails.delivery_master_id   = deliveryMasterId;
                            deliveryDetails.party_id             = item.party_id;
                            deliveryDetails.product_id           = item.product_id;
                            deliveryDetails.product_version_id   = item.product_version_id;
                            deliveryDetails.requisition_quantity = item.requisition_quantity;
                            deliveryDetails.unit_id            = item.unit_id;
                            deliveryDetails.unit_price         = item.unit_price;
                            deliveryDetails.color_id           = item.color_id;
                            deliveryDetails.delivered_quantity = item.delivered_quantity;
                            deliveryDetails.line_total         = item.line_total;
                            deliveryDetails.is_gift            = false;
                            deliveryDetails.gift_type          = "";
                            deliveryDetails.is_live_dummy      = item.is_live_dummy;
                            liftinQuantity += item.delivered_quantity ?? 0;
                        }
                        else
                        {
                            deliveryDetails.delivery_master_id   = deliveryMasterId;
                            deliveryDetails.party_id             = item.party_id;
                            deliveryDetails.product_id           = item.product_id;
                            deliveryDetails.product_version_id   = item.product_version_id;
                            deliveryDetails.requisition_quantity = item.requisition_quantity;
                            deliveryDetails.unit_id            = item.unit_id;
                            deliveryDetails.unit_price         = 0;
                            deliveryDetails.color_id           = item.color_id;
                            deliveryDetails.delivered_quantity = item.delivered_quantity;
                            deliveryDetails.line_total         = 0;
                            deliveryDetails.is_gift            = item.is_gift;
                            deliveryDetails.gift_type          = item.gift_type;
                            deliveryDetails.is_live_dummy      = false;
                            liftinQuantity += item.delivered_quantity ?? 0;
                        }

                        if (deliveryDetails.delivered_quantity > 0) //maruf
                        {
                            _entities.delivery_details.Add(deliveryDetails);
                        }


                        long saved = _entities.SaveChanges();


                        //liftingQuantity add----
                        var invLog = _entities.invoice_log.FirstOrDefault(xxx => xxx.requisition_master_id == deliveryMaster.requisition_master_id);
                        invLog.lifting_quantity += liftinQuantity;
                        _entities.SaveChanges();

                        if (saved > 0)
                        {
                            // update inventory
                            var updateInventoty = new InventoryRepository();

                            //'39' virtual in-transit warehouse-----------------------------
                            updateInventoty.UpdateInventory("RFD", deliveryMaster.delivery_no, deliveryMaster.from_warehouse_id ?? 0, 39, deliveryDetails.product_id ?? 0, deliveryDetails.color_id ?? 0, deliveryDetails.product_version_id ?? 0, deliveryDetails.unit_id ?? 0,
                                                            deliveryDetails.delivered_quantity ?? 0, deliveryMaster.delivered_by ?? 0);
                        }
                        long requisitionDetailsId = item.requisition_details_id;

                        var requisitionDetails = _entities.requisition_details.Find(requisitionDetailsId);

                        // Maruf: updating paramenters to check delivery status
                        requisitionDetails.delivered_quantity += item.delivered_quantity;
                        requisitionTotalQty += requisitionDetails.quantity ?? 0;
                        deliveryTotalQty    += requisitionDetails.delivered_quantity ?? 0;
                        _entities.SaveChanges();
                    }
                    // maruf: updating delivery status 19.Oct.2016
                    var requisitionMaster = _entities.requisition_master.FirstOrDefault(r => r.requisition_master_id == deliveryModel.DeliveryMasterData.requisition_master_id);
                    requisitionMaster.delivery_status = (deliveryTotalQty >= requisitionTotalQty) ? "Delivered" : "Partially Delivered";
                    _entities.SaveChanges();

                    //long counter = 0;

                    foreach (var item in receiveSerialNoDetails)
                    {
                        receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no);
                        //receiveSerial.product_id = receive_serial_no_details.product_id;
                        //receiveSerial.brand_id = receive_serial_no_details.brand_id;
                        //receiveSerial.color_id = receive_serial_no_details.color_id;
                        //receiveSerial.imei_no = receive_serial_no_details.imei_no;
                        //receiveSerial.received_warehouse_id = receive_serial_no_details.received_warehouse_id;
                        //receiveSerial.received_date = receive_serial_no_details.received_date;
                        //receiveSerial.grn_master_id = receive_serial_no_details.grn_master_id;
                        //receiveSerial.sales_status = receive_serial_no_details.sales_status;
                        //receiveSerial.current_warehouse_id = deliveryModel.DeliveryMasterData.to_warehouse_id;
                        //maruf: 07.Dec.2016: setting in-transit warehouse instead of party warehouse. It will be updated by party warehouse while it will be received by party


                        //receiveSerial.current_warehouse_id = deliveryMaster.to_warehouse_id;//comments on 22.05.2017
                        receiveSerial.current_warehouse_id = 39;// 22.05.2017//when deliver need to go product in Intransit warehouse.
                        receiveSerial.party_id             = deliveryMaster.party_id;
                        receiveSerial.deliver_date         = deliveryMaster.delivery_date;
                        receiveSerial.requisition_id       = deliveryMaster.requisition_master_id;
                        receiveSerial.deliver_master_id    = deliveryMaster.delivery_master_id;
                        receiveSerial.is_gift       = item.is_gift;
                        receiveSerial.is_live_dummy = item.is_live_dummy;
                        _entities.SaveChanges();
                    }
                    return(1);
                }
                return(0);
            }
            catch (Exception)
            {
                return(0);
            }
        }
        public long AddOnlineREquisition(StronglyType.OnlineRequisitionModel onlineRequisitionModel)
        {
            try
            {
                long deliveryMasterId = 0;
                int  save             = 0;
                var  requisitionModel = onlineRequisitionModel.RequisitionMaster;
                var  requitionDetails = onlineRequisitionModel.RequisitionDetailses;
                var  serialNumber     = onlineRequisitionModel.ReceiveSerialNoDetails;
                var  deliveryMaster   = new delivery_master();
                var  deliveryDetails  = new delivery_details();


                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 == requisitionModel.party_id
                                       select new
                {
                    party_prefix = ptype.party_prefix
                }).FirstOrDefault();

                int RequisitionSerial = _entities.requisition_master.Max(rq => (int?)rq.requisition_master_id) ?? 0;
                RequisitionSerial++;

                var    rqStr         = RequisitionSerial.ToString().PadLeft(7, '0');
                string requisitionNo = "REQ-" + partyTypePrefix.party_prefix + "-" + rqStr;

                requisitionModel.requisition_code        = requisitionNo;
                requisitionModel.requisition_date        = onlineRequisitionModel.RequisitionMaster.requisition_date;
                requisitionModel.expected_receiving_date = DateTime.Now;
                requisitionModel.warehouse_from          = onlineRequisitionModel.RequisitionMaster.warehouse_from;
                requisitionModel.remarks               = onlineRequisitionModel.RequisitionMaster.remarks;
                requisitionModel.amount                = onlineRequisitionModel.RequisitionMaster.amount;
                requisitionModel.party_type_id         = onlineRequisitionModel.RequisitionMaster.party_type_id;
                requisitionModel.party_id              = onlineRequisitionModel.RequisitionMaster.party_id;
                requisitionModel.created_by            = onlineRequisitionModel.RequisitionMaster.created_by;
                requisitionModel.created_date          = DateTime.Now;
                requisitionModel.updated_by            = onlineRequisitionModel.RequisitionMaster.created_by;
                requisitionModel.updated_date          = DateTime.Now;
                requisitionModel.is_invoice_created    = false;
                requisitionModel.status                = "Approved";
                requisitionModel.delivery_status       = "Delivered";
                requisitionModel.edit_count            = 0;
                requisitionModel.region_id             = 0;
                requisitionModel.area_id               = 0;
                requisitionModel.credit_limit          = 0;
                requisitionModel.credit_term           = onlineRequisitionModel.RequisitionMaster.credit_term;
                requisitionModel.contact_person_mobile = onlineRequisitionModel.RequisitionMaster.contact_person_mobile;
                requisitionModel.address               = onlineRequisitionModel.RequisitionMaster.address;

                requisitionModel.is_demo = "";

                requisitionModel.discount_percentage = 0;
                requisitionModel.discount_amount     = 0;

                requisitionModel.incentive_percentage  = 0;
                requisitionModel.incentive_amount      = 0;
                requisitionModel.finance_status        = "Not Approved";
                requisitionModel.is_deleted            = false;
                requisitionModel.territory_id          = 0;
                requisitionModel.price_type            = onlineRequisitionModel.RequisitionMaster.price_type;
                requisitionModel.requisition_type      = onlineRequisitionModel.RequisitionMaster.requisition_type;
                requisitionModel.reference_no          = onlineRequisitionModel.RequisitionMaster.reference_no;
                requisitionModel.is_requisition_closed = false;
                requisitionModel.return_quantity       = 0;
                requisitionModel.invoicable_quantity   = 0;


                _entities.requisition_master.Add(requisitionModel);
                _entities.SaveChanges();

                Int64 RequisitionMasterId = requisitionModel.requisition_master_id;

                //save requisition details

                foreach (var item in requitionDetails)
                {
                    var ooo = _entities.products.SingleOrDefault(a => a.product_id == item.product_id);
                    var requisitionDetails = new requisition_details();

                    requisitionDetails.requisition_master_id = RequisitionMasterId;
                    requisitionDetails.product_id            = item.product_id;
                    requisitionDetails.color_id            = item.color_id;
                    requisitionDetails.brand_id            = item.brand_id;
                    requisitionDetails.product_category_id = ooo.product_category_id;
                    requisitionDetails.unit_id             = ooo.unit_id;
                    requisitionDetails.price = item.price;
                    requisitionDetails.delivered_quantity = item.quantity;
                    requisitionDetails.quantity           = item.quantity;
                    requisitionDetails.line_total         = item.line_total;
                    requisitionDetails.product_version_id = item.product_version_id;
                    requisitionDetails.discount_amount    = item.discount_amount;
                    requisitionDetails.discount           = item.discount;
                    requisitionDetails.price_amount       = item.price_amount;
                    requisitionDetails.return_quantity    = 0;
                    requisitionDetails.invoice_quantity   = 0;
                    if (item.is_gift == true)
                    {
                        requisitionDetails.is_gift   = true;
                        requisitionDetails.gift_type = "Promotional Gift";
                    }
                    if (item.promotion_master_id != null)
                    {
                        requisitionDetails.promotion_master_id = item.promotion_master_id;
                    }

                    _entities.requisition_details.Add(requisitionDetails);
                    save = _entities.SaveChanges();
                }

                if (save > 0)
                {
                    var ToWarehouse =
                        _entities.warehouses.SingleOrDefault(
                            a => a.party_id == onlineRequisitionModel.RequisitionMaster.party_id);

                    long deliverySerial = _entities.delivery_master.Max(po => (long?)po.delivery_master_id) ?? 0;
                    deliverySerial++;

                    var deliveryStr = deliverySerial.ToString().PadLeft(7, '0');

                    string deliveryNo = "DN-" + partyTypePrefix.party_prefix + "-" + deliveryStr;
                    deliveryMaster.delivery_no           = deliveryNo;
                    deliveryMaster.delivery_date         = DateTime.Now;
                    deliveryMaster.party_id              = onlineRequisitionModel.RequisitionMaster.party_id;
                    deliveryMaster.requisition_master_id = RequisitionMasterId;
                    deliveryMaster.courier_id            = 0;
                    deliveryMaster.courier_slip_no       = "";
                    deliveryMaster.delivery_address      = onlineRequisitionModel.RequisitionMaster.address;
                    deliveryMaster.delivered_by          = onlineRequisitionModel.RequisitionMaster.created_by;
                    deliveryMaster.from_warehouse_id     = onlineRequisitionModel.RequisitionMaster.warehouse_from;
                    deliveryMaster.to_warehouse_id       = ToWarehouse.warehouse_id;
                    deliveryMaster.status              = "Deliverd";
                    deliveryMaster.remarks             = "";
                    deliveryMaster.total_amount        = onlineRequisitionModel.RequisitionMaster.amount;
                    deliveryMaster.lot_no              = "";
                    deliveryMaster.vehicle_no          = "";
                    deliveryMaster.truck_driver_name   = "";
                    deliveryMaster.truck_driver_mobile = "";

                    _entities.delivery_master.Add(deliveryMaster);
                    _entities.SaveChanges();
                    deliveryMasterId = deliveryMaster.delivery_master_id;

                    //delivery details

                    foreach (var item in requitionDetails)
                    {
                        var ooo = _entities.products.SingleOrDefault(a => a.product_id == item.product_id);
                        var deliveryDetails1 = new delivery_details();

                        deliveryDetails1.delivery_master_id = deliveryMasterId;
                        deliveryDetails1.product_id         = item.product_id;
                        deliveryDetails1.color_id           = item.color_id;
                        deliveryDetails1.unit_id            = ooo.unit_id;
                        deliveryDetails1.unit_price         = item.price;
                        deliveryDetails1.delivered_quantity = item.quantity;
                        if (item.is_gift == true)
                        {
                            deliveryDetails1.is_gift   = true;
                            deliveryDetails1.gift_type = "Promotion";
                        }
                        else
                        {
                            deliveryDetails1.is_gift   = false;
                            deliveryDetails1.gift_type = "";
                        }

                        deliveryDetails1.requisition_quantity = item.quantity;
                        deliveryDetails1.line_total           = item.line_total;
                        deliveryDetails1.product_version_id   = item.product_version_id;
                        deliveryDetails1.party_id             = onlineRequisitionModel.RequisitionMaster.party_id;

                        deliveryDetails1.is_live_dummy = false;

                        _entities.delivery_details.Add(deliveryDetails1);
                        int saved = _entities.SaveChanges();

                        if (saved > 0)
                        {
                            // update inventory
                            InventoryRepository updateInventoty = new InventoryRepository();

                            var masterDelivery = _entities.delivery_master.Find(deliveryMasterId);

                            //'39' virtual in-transit warehouse-----------------------------
                            updateInventoty.UpdateInventory("DELIVERY", masterDelivery.delivery_no, masterDelivery.from_warehouse_id ?? 0, masterDelivery.to_warehouse_id ?? 0, item.product_id ?? 0, item.color_id ?? 0, item.product_version_id ?? 0, ooo.unit_id ?? 0,
                                                            item.quantity ?? 0, onlineRequisitionModel.RequisitionMaster.created_by ?? 0);
                        }
                    }

                    foreach (var item in serialNumber)
                    {
                        receive_serial_no_details receiveSerial = _entities.receive_serial_no_details.FirstOrDefault(r => r.imei_no == item.imei_no || r.imei_no2 == item.imei_no);
                        receiveSerial.current_warehouse_id = ToWarehouse.warehouse_id;
                        receiveSerial.party_id             = onlineRequisitionModel.RequisitionMaster.party_id;
                        receiveSerial.deliver_date         = DateTime.Now;
                        receiveSerial.requisition_id       = RequisitionMasterId;
                        receiveSerial.deliver_master_id    = deliveryMasterId;
                        receiveSerial.is_gift       = item.is_gift;
                        receiveSerial.is_live_dummy = false;
                        _entities.SaveChanges();
                    }
                }

                return(deliveryMasterId);
            }
            catch (Exception)
            {
                throw;
            }
        }