예제 #1
0
        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);
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        // 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);
            }
        }