public bool saveDisblist(Disbursement_M disbl,int userid) { bool ans = false; List<requisitiondetail> rdlist = new List<requisitiondetail>(); //requisitiondetail rd =new requisitiondetail(); disbursementdetail disbdet = new disbursementdetail(); disbursement disb = new disbursement(); checkdate = DateTime.Today; string status = "Ready"; //checking whether the disb-list already exists var q = from d in se.disbursements where d.DisbDepID == disbl.DepID && d.DisbStatus == status select d; disb = q.FirstOrDefault(); //if disb-list already exits if (disb != null) { item newitem = new item(); newitem = se.items.Find(disbl.ItemID); disbursementdetail ddetail = new disbursementdetail(); var a = from dd in se.disbursementdetails where dd.DisbID == disb.DisbID && dd.DisbItemID == disbl.ItemID select dd; ddetail = a.FirstOrDefault(); if (ddetail != null) { //if (disbl.RequiredQuant >= ddetail.DisbItemQuantReq) //{ // ddetail.DisbItemQuantReq = ddetail.DisbItemQuantReq + disbl.RequiredQuant; // ddetail.DisbItemQuantDelivered = ddetail.DisbItemQuantDelivered + disbl.QuantinHand; //} //else //{ // ddetail.DisbItemQuantDelivered = ddetail.DisbItemQuantDelivered + disbl.QuantinHand; //} if (ddetail.DisbItemQuantReq == ddetail.DisbItemQuantDelivered) { ddetail.DisbItemQuantReq = ddetail.DisbItemQuantReq + disbl.RequiredQuant; ddetail.DisbItemQuantDelivered = ddetail.DisbItemQuantDelivered + disbl.QuantinHand; } else if(ddetail.DisbItemQuantReq>ddetail.DisbItemQuantDelivered) { if (ddetail.DisbItemQuantReq > (ddetail.DisbItemQuantDelivered + disbl.QuantinHand)) { int toadd = (disbl.RequiredQuant - (ddetail.DisbItemQuantReq - ddetail.DisbItemQuantDelivered)) ?? default(int); ddetail.DisbItemQuantReq = ddetail.DisbItemQuantReq + toadd; ddetail.DisbItemQuantDelivered = ddetail.DisbItemQuantDelivered + disbl.QuantinHand; } else { ddetail.DisbItemQuantDelivered = ddetail.DisbItemQuantDelivered + disbl.QuantinHand; } } try { se.SaveChanges(); newitem.ItemQuant = newitem.ItemQuant -disbl.QuantinHand; createTransaction(disbl, newitem,userid); CheckForOutStanding(disbl); ans = true; } catch (Exception ex) { ans = false; } //check for outstanding request } else { disbursementdetail newdd = new disbursementdetail(); newdd.DisbID = disb.DisbID; newdd.DisbItemID = disbl.ItemID; newdd.DisbItemQuantDelivered = disbl.QuantinHand; newdd.DisbItemQuantReq = disbl.RequiredQuant; try { se.disbursementdetails.Add(newdd); se.SaveChanges(); newitem.ItemQuant = newitem.ItemQuant - disbl.QuantinHand; //saving transaction createTransaction(disbl, newitem,userid); CheckForOutStanding(disbl); ans = true; } catch (Exception ex) { ans = false; } } return ans; } else { // creating a new disbursement ans = createDisbursement(disbl,userid); } return ans; }
public bool createDisbursement(Disbursement_M disbl,int userid) { bool ans = false; List<requisitiondetail> rdlist = new List<requisitiondetail>(); //requisitiondetail rd =new requisitiondetail(); disbursementdetail disbdet = new disbursementdetail(); disbursement disb = new disbursement(); item newitem = new item(); // newitem = se.items.Find(disbl.ItemID); //creating a new disbursement disbursement disb1 = new disbursement(); disb1.DisbDepID = disbl.DepID; disb1.DisbStatus = "Ready"; disb1.DisbReceiveDate = null; disb1.DisbCreateDate = DateTime.Today; se.disbursements.Add(disb1); se.SaveChanges(); //creating a Disbursement details disbdet.DisbID = disb1.DisbID; disbdet.DisbItemID = disbl.ItemID; disbdet.DisbItemQuantDelivered = disbl.QuantinHand; disbdet.DisbItemQuantReq = disbl.RequiredQuant; try { se.disbursementdetails.Add(disbdet); se.SaveChanges(); newitem.ItemQuant = newitem.ItemQuant - disbl.QuantinHand; se.SaveChanges(); createTransaction(disbl, newitem, userid); ans = true; } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); } } } if (ans == true) { CheckForOutStanding(disbl); ans = true; } return ans; }