Beispiel #1
0
        //Methods------------------
        protected void Save()
        {
            try
            {
                //added by ather for file attachment url
                string  path       = "~/Uploads/AttachedFiles/Purchase/"; //path without filename to save file
                bool    fileupMsg  = uploadFile(fuAttacheFile, path, "");
                decimal balanceAmt = 0;                                   // Convert.ToDecimal(txtBalanceAmt.Text);
                decimal paidAmnt   = 0;

                if (!string.IsNullOrEmpty(txtPaidAmt.Text))
                {
                    paidAmnt = Convert.ToDecimal(txtPaidAmt.Text);
                }

                if (!string.IsNullOrEmpty(txtBalanceAmt.Text))
                {
                    balanceAmt = Convert.ToDecimal(txtBalanceAmt.Text);
                }


                tbl_purchase purchase = new tbl_purchase();
                if (fileupMsg)
                {
                    path = path + Path.GetFileName(fuAttacheFile.PostedFile.FileName); //path with filename to save in DB
                    purchase.attachmentUrl = path;
                }
                purchase.company_id       = companyId;
                purchase.branch_id        = branchId;
                purchase.financialyear_id = financialYearId;
                purchase.InvoiceNumber    = lblInvoice.Text;

                purchase.PaymentMode_id = Convert.ToInt32(ddlPaymentMode.SelectedValue);
                purchase.status         = true;
                purchase.party_id       = Convert.ToInt32(ddlVendor.SelectedValue);
                purchase.Po_Date        = DateTime.ParseExact(txtdate.Text, "dd/MM/yyyy", new CultureInfo("en-US"));
                purchase.po_no          = txtPONo.Text;
                purchase.Note           = txtNotePurchase.Text;
                purchase.OtherExpLabel  = txtOtherExpLabel.Text;
                purchase.other_expenses = Convert.ToDecimal(txtotherexpence.Text);

                purchase.created_by   = user_id;
                purchase.created_date = DateTime.Now;


                //insert into Purchase Payment Details
                tbl_PurchasePaymentDetials purchasePaymentDetail = new tbl_PurchasePaymentDetials();
                purchasePaymentDetail.TaxAmount      = Convert.ToDecimal(lblTaxAmount.Text);
                purchasePaymentDetail.DiscountAmount = Convert.ToDecimal(lblDiscountAmt.Text);
                purchasePaymentDetail.SubTotal       = Convert.ToDecimal(lblsubtotal.Text);
                purchasePaymentDetail.GrandTotal     = Convert.ToDecimal(lblGrandTotal.Text);
                purchasePaymentDetail.PaidAmnt       = paidAmnt;
                purchasePaymentDetail.GivenAmnt      = paidAmnt;
                purchasePaymentDetail.BalanceAmnt    = balanceAmt;
                purchasePaymentDetail.CreatedDate    = DateTime.Now;
                purchasePaymentDetail.CreatedBy      = user_id;
                purchasePaymentDetail.FromTable      = "Purchase";

                purchasePaymentDetail.OtherExpLabel = txtOtherExpLabel.Text;
                purchasePaymentDetail.OtherExp      = Convert.ToDecimal(txtotherexpence.Text);

                //string otherExp = txtotherexpence.Text;
                //if (otherExp.Contains("-"))
                //{
                //    var calculatedDiscount = Convert.ToDecimal(lblDiscountAmt.Text);
                //    var overAllDisc = Convert.ToDecimal(otherExp.Substring(otherExp.LastIndexOf('-') + 0));
                //    var totalDiscount = calculatedDiscount - overAllDisc;

                //    purchasePaymentDetail.DiscountAmount = totalDiscount;
                //}
                //else
                //{
                //    purchasePaymentDetail.DiscountAmount = Convert.ToDecimal(lblDiscountAmt.Text);
                //}


                purchasePaymentDetail.DiscountAmount = Convert.ToDecimal(lblDiscountAmt.Text);
                purchase.tbl_PurchasePaymentDetials.Add(purchasePaymentDetail);


                for (int i = 0; i <= gvpurchasedetails.Rows.Count - 1; i++)
                {
                    int         productId = Convert.ToInt32(gvpurchasedetails.Rows[i].Cells[2].Text);
                    int         batchId   = Convert.ToInt32(gvpurchasedetails.Rows[i].Cells[4].Text);
                    tbl_product product   = context.tbl_product.Where(w => w.product_id == productId).FirstOrDefault();
                    var         qty       = Convert.ToInt32(gvpurchasedetails.Rows[i].Cells[5].Text);
                    //Add into Purchase Details table for each product
                    tbl_purchasedetails purchaseDetails = new tbl_purchasedetails();
                    purchaseDetails.product_id = productId;
                    purchaseDetails.batch_id   = batchId;
                    // purchaseDetails.tax_id = product.tax_id;
                    purchaseDetails.unit_id      = product.unit_id;
                    purchaseDetails.tax_amt      = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[13].Text);
                    purchaseDetails.dicount_amt  = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[9].Text);
                    purchaseDetails.quantity     = qty;
                    purchaseDetails.amount       = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[14].Text);
                    purchaseDetails.created_by   = Convert.ToString(user_id);
                    purchaseDetails.created_date = DateTime.Now;
                    purchaseDetails.status       = true;

                    var groupId = Convert.ToInt32(gvpurchasedetails.Rows[i].Cells[10].Text);

                    DataTable taxgroupTypes = helper.LINQToDataTable(context.SelectProductTaxGroup(groupId, productId, qty));
                    ViewState["TotalTaxPercent"] = null;
                    for (int j = 0; j <= taxgroupTypes.Rows.Count - 1; j++)
                    {
                        ViewState["TotalTaxPercent"] = taxgroupTypes.Rows[j].Field <decimal>("totalTaxPercetage");
                    }

                    //insert into tax group purchase
                    tbl_purchasetaxgroup purchaseTaxGroup = new tbl_purchasetaxgroup();
                    purchaseTaxGroup.group_id           = groupId;
                    purchaseTaxGroup.product_id         = productId;
                    purchaseTaxGroup.batchId            = batchId;
                    purchaseTaxGroup.totalTaxPercentage = (Decimal)ViewState["TotalTaxPercent"];
                    purchaseTaxGroup.group_name         = gvpurchasedetails.Rows[i].Cells[11].Text;
                    //Get the Tax type saved from db
                    //insert into tax group detailes
                    // var taxGroupTypes = context.tbl_productTaxGroup.Join(context.tbl_taxgroup, t => t.group_id, pt => pt.group_id, (t, pt) => new { t.group_id, pt.group_name, t.product_id }).Where(t => t.product_id == productId).ToList();


                    for (int j = 0; j <= taxgroupTypes.Rows.Count - 1; j++)
                    {
                        tbl_purchasetaxgroupdetails purchaseTaxDetails = new tbl_purchasetaxgroupdetails();
                        purchaseTaxDetails.type_id        = taxgroupTypes.Rows[j].Field <int>("type_id");
                        purchaseTaxDetails.tax_percentage = taxgroupTypes.Rows[j].Field <decimal>("tax_percentage");
                        purchaseTaxGroup.tbl_purchasetaxgroupdetails.Add(purchaseTaxDetails);
                    }

                    purchase.tbl_purchasetaxgroup.Add(purchaseTaxGroup);
                    //Enter Details In tbl_ActualPurchaseTaxAndPrice : to get the original Values at the time of Purchase Return
                    tbl_ActualPurchaseTaxAndPrice actualPurchase = new tbl_ActualPurchaseTaxAndPrice();
                    actualPurchase.product_id = productId;
                    actualPurchase.status     = true;
                    //actualPurchase.tax_percent = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[10].Text);
                    actualPurchase.purchase_rate    = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[6].Text);
                    actualPurchase.discount_percent = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[8].Text);
                    actualPurchase.discount_amnt    = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[9].Text);
                    actualPurchase.batch_id         = batchId;
                    actualPurchase.sale_price       = Convert.ToDecimal(gvpurchasedetails.Rows[i].Cells[7].Text);
                    actualPurchase.created_by       = Convert.ToString(user_id);
                    actualPurchase.created_date     = DateTime.Now;

                    //Add into Actual Purchase Tax And Return Table
                    purchase.tbl_ActualPurchaseTaxAndPrice.Add(actualPurchase);


                    //Add Stock if not exist or update the Stock against the product
                    tbl_stock stock = new tbl_stock();
                    if (!IsProductStockExists(companyId, branchId, productId, batchId))
                    {
                        stock.company_id   = companyId;
                        stock.branch_id    = branchId;
                        stock.product_id   = productId;
                        stock.batch_id     = batchId;
                        stock.qty          = Convert.ToInt32(gvpurchasedetails.Rows[i].Cells[5].Text);
                        stock.status       = true;
                        stock.created_by   = Convert.ToString(user_id);
                        stock.created_date = DateTime.Now;
                        context.tbl_stock.Add(stock);
                    }
                    else
                    {
                        stock               = context.tbl_stock.Where(w => w.company_id == companyId && w.branch_id == branchId && w.product_id == productId && w.batch_id == batchId).FirstOrDefault();
                        stock.qty           = stock.qty + Convert.ToInt32(gvpurchasedetails.Rows[i].Cells[5].Text);
                        stock.modified_by   = Convert.ToString(user_id);
                        stock.modified_date = DateTime.Now;
                    }
                    purchase.tbl_purchasedetails.Add(purchaseDetails);
                }


                context.tbl_purchase.Add(purchase);
                context.SaveChanges();
                string order = purchase.InvoiceNumber;
                Session["p_id"] = purchase.purchase_id;
                ClientScript.RegisterStartupScript(this.GetType(), "Pop", "openalert('Saved successfully, Your order number is " + order + "');", true);
            }
            catch (Exception ex)
            {
                ErrorLog.saveerror(ex);
            }
        }