/// <summary> /// Use this to create buy sell orders programatically /// </summary> /// <param name="productChild"></param> /// <param name="ownerProductChild"></param> /// <param name="quantity"></param> /// <param name="customerUser"></param> /// <param name="selectListOwner"></param> /// <param name="selectListCustomer"></param> /// <param name="addressBillToId"></param> /// <param name="addressShipToId"></param> /// <param name="selectListBillTo"></param> /// <param name="selectListShipTo"></param> /// <param name="buySellDocStateEnum"></param> /// <returns></returns> public BuySellDoc CreateSale( ProductChild productChild, Owner ownerProductChild, int quantity, decimal salePrice, Customer customerUser, System.Web.Mvc.SelectList selectListOwner, System.Web.Mvc.SelectList selectListCustomer, string addressBillToId, string addressShipToId, System.Web.Mvc.SelectList selectListBillTo, System.Web.Mvc.SelectList selectListShipTo, BuySellDocStateENUM buySellDocStateEnum, BuySellDocStateModifierENUM buySellDocStateModifierEnum, DateTime pleasePickupOnDate_End, DateTime expectedDeliveryDate, string shopId) { BuySellDoc sale = BuySellDocBiz.Factory() as BuySellDoc; sale.ShopId = shopId; sale.Initialize( ownerProductChild.Id, customerUser.Id, addressBillToId, addressShipToId, selectListOwner, selectListCustomer, selectListBillTo, selectListShipTo); if (pleasePickupOnDate_End == DateTime.MaxValue || pleasePickupOnDate_End == DateTime.MinValue) { } else { sale.PleasePickupOnDate_End = pleasePickupOnDate_End; } if (expectedDeliveryDate == DateTime.MaxValue || expectedDeliveryDate == DateTime.MinValue) { } else { sale.ExpectedDeliveryDate = expectedDeliveryDate; } //dont really need this, but it is good for consistancy. sale.BuySellDocumentTypeEnum = BuySellDocumentTypeENUM.Purchase; sale.BuySellDocStateModifierEnum = buySellDocStateModifierEnum; sale.BuySellDocStateEnum = buySellDocStateEnum; sale.ExpectedDeliveryDate = expectedDeliveryDate; BuySellItem buySellItem = new BuySellItem(sale.Id, productChild.Id, quantity, salePrice, productChild.FullName()); sale.Add(buySellItem); BuySellDocBiz.GetDefaultVehicalType(sale); //add the owners address sale.AddressShipFromId = productChild.ShipFromAddressId; setStatusDate(sale); ControllerCreateEditParameter parm = new ControllerCreateEditParameter(); parm.Entity = sale as ICommonWithId; parm.GlobalObject = GetGlobalObject(); getCustomerSalesmanAndOwnerSalesman(sale); //add the payment amount. BuySellDocBiz.Create(parm); return(sale); }
public string AddToSale(string userId, string productChildId, string poNumber, DateTime poDate) { userId.IsNullOrWhiteSpaceThrowException("No user"); double totalThisItem = 0; //who is the owner:The product Child owner is the owner //get the productChild productChildId.IsNullOrWhiteSpaceThrowException("No Product"); ProductChild productChild = ProductChildBiz.Find(productChildId); productChild.IsNullThrowException("productChild"); //get the product child's owner Owner ownerProductChild = productChild.Owner; ownerProductChild.IsNullThrowException("productChildOwner"); //get the owner //Get the select list for owner Person ownerPerson = ownerProductChild.Person; ownerPerson.IsNullThrowException("ownerPerson"); System.Web.Mvc.SelectList ownerSelectList = OwnerBiz.SelectListOnlyWith(ownerProductChild); ////the user is the customer user; //get the customer Customer customerUser = CustomerBiz.GetPlayerFor(userId); //Get the select list for Customer //remove the owner from the list... owner cannot sell to self. System.Web.Mvc.SelectList customerSelectList = CustomerBiz.SelectListWithout(ownerPerson); System.Web.Mvc.SelectList selectListOwner = OwnerBiz.SelectListOnlyWith(ownerProductChild); System.Web.Mvc.SelectList selectListCustomer = CustomerBiz.SelectListWithout(ownerPerson); //this is the address in the customer AddressMain addressBillTo = customerUser.DefaultBillAddress; AddressMain addressShipTo = customerUser.DefaultShipAddress; AddressComplex addressShipFromComplex = productChild.ShipFromAddressComplex; string addressBillToId = ""; string addressShipToId = ""; if (!addressBillTo.IsNull()) { addressBillToId = addressBillTo.Id; } if (!addressShipTo.IsNull()) { addressShipToId = addressShipTo.Id; } //Get the select list for AddressInform System.Web.Mvc.SelectList selectListBillTo = AddressBiz.SelectListBillAddressCurrentUser(); //Get the select list for AddressShipTo System.Web.Mvc.SelectList selectListShipTo = AddressBiz.SelectListShipAddressCurrentuser(); //check to see if there is any open sale which belongs to the same buyer and seller BuySellDoc sale = BuySellDocBiz.GetOpenSaleWithSameCustomerAndSeller(customerUser.Id, ownerProductChild.Id, productChild); //create the itemList. List <BuySellItem> buySellItems = new List <BuySellItem>(); string shopId = ""; if (sale.IsNull()) { //otherwise add a new sale sale = CreateSale( productChild, ownerProductChild, 1, productChild.Sell.SellPrice, customerUser, selectListOwner, selectListCustomer, addressBillToId, addressShipToId, selectListBillTo, selectListShipTo, BuySellDocStateENUM.RequestUnconfirmed, BuySellDocStateModifierENUM.Unknown, DateTime.Now, DateTime.Now, shopId); totalThisItem++; } else { //dont really need this, but it is good for consistancy. sale.BuySellDocumentTypeEnum = BuySellDocumentTypeENUM.Purchase; sale.BuySellDocStateEnum = BuySellDocStateENUM.RequestUnconfirmed; //now check to see if it is the same item... or is it a new item //get list of items for the sale List <BuySellItem> itemList = sale.BuySellItems.Where(x => x.MetaData.IsDeleted == false).ToList(); if (itemList.IsNullOrEmpty()) { BuySellItem buySellItem = new BuySellItem(sale.Id, productChild.Id, 1, productChild.Sell.SellPrice, productChild.FullName()); sale.Add(buySellItem); } else { //there are items in the list BuySellItem itemFound = itemList.FirstOrDefault(x => x.ProductChildId == productChild.Id); if (itemFound.IsNull()) { BuySellItem buySellItem = new BuySellItem(sale.Id, productChild.Id, 1, productChild.Sell.SellPrice, productChild.FullName()); sale.Add(buySellItem); } else { totalThisItem = itemFound.Quantity.Order; itemFound.Quantity.Order += 1; itemFound.Quantity.Order_Original = itemFound.Quantity.Order; //itemFound.Quantity.Ship += 1; } } totalThisItem++; sale.AddressShipFromComplex = addressShipFromComplex; BuySellDocBiz.GetDefaultVehicalType(sale); sale.AddressShipFromId = productChild.ShipFromAddressId; sale.RequestUnconfirmed.SetToTodaysDate(UserName, UserId); ControllerCreateEditParameter parm = new ControllerCreateEditParameter(); parm.Entity = sale as ICommonWithId; parm.GlobalObject = GetGlobalObject(); BuySellDocBiz.Update(parm); } BuySellDocBiz.SaveChanges(); string message = string.Format("Success. You ordered {0:N2} for {1:N2} (X{2:N2})", productChild.FullName(), productChild.Sell.SellPrice, totalThisItem); return(message); }