public static tblNewRFQPurchaseOrderHeader MapToModel(NewRfqPurchaseOrderHeaderViewModel objectToBeMapped) { var purchHeader = objectToBeMapped; var purchHeaderTemp = new tblNewRFQPurchaseOrderHeader { CreationDate = purchHeader.CreationDate, Vendor = purchHeader.VendorCode, IsPosted = purchHeader.IsPosted, WareHouseID = purchHeader.WarHouseCode }; if (purchHeader.TransID != null) { purchHeaderTemp.TransID = (int)purchHeader.TransID; } purchHeaderTemp.NewRFQID = purchHeader.ParentId; purchHeaderTemp.PurchaseID = purchHeader.PurchId; purchHeaderTemp.tblNewRFQPurchLines = new ObservableCollection <tblNewRFQPurchLine>(); foreach (var purchline in from detail in purchHeader.PurchaseOrderDetails let detail1 = detail select new tblNewRFQPurchLine { ColorCode = detail1.StyleColor ?? "", PurchasePrice = detail1.Price, StyleCode = detail1.StyleHeader, DeliveryDate = detail1.DelivaryDate, tblNewRFQPurchLineSizes = new ObservableCollection <tblNewRFQPurchLineSize> ( detail.PurchaseOrderSizes .Where(x => x.IsTextBoxEnabled) .Select(sizeDetail => new tblNewRFQPurchLineSize { Size = sizeDetail.SizeCode, Qty = int.Parse( sizeDetail.SizeConsumption.ToString(CultureInfo.InvariantCulture)) , Ratio = double.Parse( sizeDetail.SizeRatio.ToString(CultureInfo.InvariantCulture)) }) ) }) { purchHeaderTemp.tblNewRFQPurchLines .Add ( purchline ); } return(purchHeaderTemp); }
private void PostNewPoToAx(tblNewRFQPurchaseOrderHeader paramHeaderObjToPost) { var context = new WorkFlowManagerDBEntities(); var headerObjToPost = context.tblNewRFQPurchaseOrderHeaders.Include("tblNewRFQPurchLines.tbl_PurchaseOrderSizeDetails") .FirstOrDefault(x => x.TransID == paramHeaderObjToPost.TransID); var axapta = new Axapta(); var credential = new NetworkCredential("bcproxy", "around1"); try { axapta.LogonAs("ahmed.gamal", "ccasual.loc", credential, "ccr", null, null, null); } catch (Exception) { throw new Exception("There was a problem logging to ax"); } try { axapta.TTSBegin(); var inventDimTable = axapta.CreateAxaptaRecord("InventDim"); var inventColorTable = axapta.CreateAxaptaRecord("InventColor"); var inventDimCombination = axapta.CreateAxaptaRecord("InventDimCombination"); var axaptaRecord = axapta.CreateAxaptaRecord("PurchTable"); axaptaRecord.Clear(); axaptaRecord.InitValue(); var purchId = headerObjToPost.PurchaseID; axaptaRecord.set_Field("PurchId", purchId); var header = axapta.CallStaticRecordMethod("VendTable", "find", headerObjToPost.Vendor) as AxaptaRecord; axaptaRecord.Call("initFromVendTable", header); axaptaRecord.Insert(); context.tbl_PurchaseOrderDetails.MergeOption = MergeOption.NoTracking; context.V_Warehouse.MergeOption = MergeOption.NoTracking; var detailHeadersFull = headerObjToPost.tblNewRFQPurchLines; foreach (var ditem in detailHeadersFull) { foreach (var sdItem in ditem.tblNewRFQPurchLineSizes) { var itemId = ditem.StyleCode; axaptaRecord = axapta.CreateAxaptaRecord("PurchLine"); axaptaRecord.Clear(); axaptaRecord.InitValue(); inventDimTable.Clear(); inventDimTable.set_Field("InventLocationId", headerObjToPost.WareHouseID); var warehouse = context.V_Warehouse.SingleOrDefault( x => x.DataAreaID == "ccr" && x.WarehouseID == headerObjToPost.WareHouseID); if (warehouse != null) { inventDimTable.set_Field("InventSiteId", warehouse.SiteId); } inventColorTable.set_Field("ItemID", ditem.StyleCode); inventColorTable.set_Field("InventColorId", ditem.ColorCode); var clr = (bool) axapta.CallStaticRecordMethod("InventColor", "checkExist", ditem.StyleCode, ditem.ColorCode); if (!clr) { inventColorTable.Insert(); } else { inventColorTable.Clear(); } try { inventDimCombination.set_Field("ItemID", ditem.StyleCode); inventDimCombination.set_Field("InventSizeId", sdItem.Size); inventDimCombination.set_Field("InventColorId", ditem.ColorCode); inventDimCombination.Insert(); } catch { } inventDimTable.set_Field("InventColorId", ditem.ColorCode); inventDimTable.set_Field("InventSizeId", sdItem.Size); inventDimTable = axapta.CallStaticRecordMethod("InventDim", "findOrCreate", inventDimTable) as AxaptaRecord; var tempx = inventDimTable.get_Field("inventDimId").ToString(); axaptaRecord.set_Field("InventDimId", tempx); if (ditem.DeliveryDate != null) { axaptaRecord.set_Field("DeliveryDate", ditem.DeliveryDate); } axaptaRecord.set_Field("ItemId", itemId); axaptaRecord.set_Field("purchId", purchId); axaptaRecord.set_Field("PurchUnit", "Pcs"); axaptaRecord.set_Field("QtyOrdered", Convert.ToDecimal(sdItem.Qty.ToString())); axaptaRecord.set_Field("PurchPrice", Convert.ToDecimal(ditem.PurchasePrice)); axaptaRecord.set_Field("PurchQty", Convert.ToDecimal(sdItem.Qty.ToString())); axaptaRecord.set_Field("LineAmount", Convert.ToDecimal((sdItem.Qty * ditem.PurchasePrice).ToString())); axaptaRecord.Call("createLine", true, true, false, true, true, false); } //TO DO: Add Posting TO Retail Plus Logic Here! //-//////////////////////////////////////////// var retailContext = new ccnewEntities(); //var retailPoHeader = new TblPOHeader //{ // Code = headerObjToPost.PurchaseID, // tblstore = headerObjToPost.WareHouseID, // tblseason = headerObjToPost.tbl_RFQHeader.SeasonCode, //}; var retailPoMainDetail = new TblPOMainDetail(); var retailPoDetail = new TblPODetail(); axapta.TTSCommit(); headerObjToPost.IsPosted = true; context.SaveChanges(); } } catch (Exception) { axapta.TTSAbort(); throw; } finally { axapta.Logoff(); axapta.Dispose(); } }