public static TblDyeingOrderHeaderViewModel VwMapToDyeingorderHeader(TblDyeingOrdersHeader row) { return(new TblDyeingOrderHeaderViewModel { DocPlan = row.DocPlan, DyeingProductionOrder = row.DyeingProductionOrder, TransactionDate = row.TransactionDate, Vendor = row.Vendor, VendorPerRow = new Vendor { vendor_code = row.Vendor } }); }
public void GenerateDyeingOrders(int iserial) { using (var entities = new WorkFlowManagerDBEntities()) { var planHeader = entities.TblDyeingPlanHeaders.SingleOrDefault(x => x.Iserial == iserial); if (planHeader != null) { planHeader.PlanGenerated = true; var dyeingSummaryList = entities.TblDyeingSummaries.Include("DyeingSummaryServices").Where(x => x.DyeingHeader == planHeader.Iserial).ToList(); var vendorList = dyeingSummaryList.Select(x => x.Vendor).Distinct().ToList(); foreach (var item in vendorList) { var dyeingHeaderRow = new TblDyeingOrdersHeader { DocPlan = planHeader.DocNo, Vendor = item, TransactionDate = planHeader.TransactionDate, }; entities.AddToTblDyeingOrdersHeaders(dyeingHeaderRow); entities.SaveChanges(); const int transId = 1; var mainDetails = new TblDyeingOrdersMainDetail { DyeingProductionOrder = dyeingHeaderRow.DyeingProductionOrder, WareHouse = planHeader.Location, TransactionType = 0, TransId = transId, Posted = false }; entities.AddToTblDyeingOrdersMainDetails(mainDetails); entities.SaveChanges(); var summarylist = dyeingSummaryList.Where(x => x.Vendor == item).ToList(); var sub = new ObservableCollection <TblDyeingOrdersDetail>(); foreach (var dyeingObject in summarylist) { var orderDetailsServices = new ObservableCollection <DyeingOrderDetailsService>(); foreach (var service in dyeingObject.DyeingSummaryServices) { orderDetailsServices.Add(new DyeingOrderDetailsService { Notes = service.Notes, ServiceCode = service.ServiceCode, ServiceName = service.ServiceName, Qty = service.Qty }); } var entityCollection = new EntityCollection <DyeingOrderDetailsService>(); foreach (var entity in orderDetailsServices) { entityCollection.Add(entity); } sub.Add(new TblDyeingOrdersDetail { BatchNo = dyeingObject.BatchNo, Color = dyeingObject.Color, DyeingClass = dyeingObject.DyeingClass, DyedFabric = dyeingObject.DyedFabric, Unit = dyeingObject.Unit, CalculatedTotalQty = Convert.ToSingle(dyeingObject.CalculatedTotalQty), FabricCode = dyeingObject.FabricCode, DyeingProductionOrder = dyeingHeaderRow.DyeingProductionOrder, TransactionType = mainDetails.TransactionType, TransId = mainDetails.TransId, DyeingOrderDetailsServices = entityCollection, }); } foreach (var orderDetails in sub) { entities.AddToTblDyeingOrdersDetails(orderDetails); entities.SaveChanges(); } } } } }
private void PickingListForAxServices(TblDyeingOrdersHeader objToPost, TblDyeingOrdersMainDetail headerObjToPost, int postPostOrNo, int userIserial, string transactionGuid) { using (var entities = new WorkFlowManagerDBEntities()) { var axapta = new Axapta(); AxaptaRecord AxaptaRecord; var credential = new NetworkCredential("bcproxy", "around1"); var tableName = "PRODCONNECTION"; TblAuthUser userToLogin; using (var model = new WorkFlowManagerDBEntities()) { userToLogin = model.TblAuthUsers.SingleOrDefault(x => x.Iserial == userIserial); } axapta.LogonAs(userToLogin.User_Win_Login, userToLogin.User_Domain, credential, "Ccm", null, null, null); var vendorWmsLocation = entities.GetWmsLocations.SingleOrDefault(x => x.VENDID == objToPost.Vendor); var vendorLoc = entities.GetLocations.SingleOrDefault(x => x.INVENTLOCATIONID == vendorWmsLocation.INVENTLOCATIONID); try { foreach (var item in headerObjToPost.TblDyeingOrdersDetails) { foreach (var service in item.DyeingOrderDetailsServices) { AxaptaRecord = axapta.CreateAxaptaRecord(tableName); AxaptaRecord.Clear(); AxaptaRecord.InitValue(); AxaptaRecord.set_Field("TRANSID", item.DyeingProductionOrder); AxaptaRecord.set_Field("RAWID", service.ServiceCode); AxaptaRecord.set_Field("DYEDITEM", item.DyedFabric); AxaptaRecord.set_Field("RAWQTY", item.CalculatedTotalQty); AxaptaRecord.set_Field("DYEDQTY", item.CalculatedTotalQty); AxaptaRecord.set_Field("UNITID", "Kg"); AxaptaRecord.set_Field("FROMSITE", vendorLoc.INVENTSITEID); AxaptaRecord.set_Field("TOSITE", vendorLoc.INVENTSITEID); AxaptaRecord.set_Field("FROMLOCATION", vendorWmsLocation.WMSLOCATIONID); AxaptaRecord.set_Field("TOLOCATION", vendorWmsLocation.WMSLOCATIONID); AxaptaRecord.set_Field("TRANSTYPE", Convert.ToInt64(6)); AxaptaRecord.set_Field("FROMCONFIG", item.Color); AxaptaRecord.set_Field("TOCONFIG", item.Color); AxaptaRecord.set_Field("FROMBATCH", item.BatchNo.ToString()); AxaptaRecord.set_Field("TOBATCH", item.BatchNo.ToString()); AxaptaRecord.set_Field("FROMWAREHOUSE", vendorWmsLocation.INVENTLOCATIONID); AxaptaRecord.set_Field("TOWAREHOUSE", vendorWmsLocation.INVENTLOCATIONID); AxaptaRecord.set_Field("JOURNALLINKID", headerObjToPost.TransId); AxaptaRecord.set_Field("TransactionGuid", transactionGuid); AxaptaRecord.Insert(); } } if (headerObjToPost.TransactionDate == null) { headerObjToPost.TransactionDate = DateTime.UtcNow; } //public ProdJournalId run(int transId,int journalId,int WhatToDo,str JourName,int PostorNo) var import = axapta.CreateAxaptaObject("CLEDyeProcesse"); var PickingList = import.Call("run", headerObjToPost.DyeingProductionOrder, headerObjToPost.TransId, 6, "Name", postPostOrNo, headerObjToPost.TransactionDate.Value.ToUniversalTime()); axapta.Logoff(); } catch (Exception) { axapta.Logoff(); throw; } } }
public List <TblDyeingOrdersMainDetail> SaveDyeingOrder(TblDyeingOrdersHeader header, List <TblDyeingOrdersMainDetail> Maindetails) { using (var entities = new WorkFlowManagerDBEntities()) { if (header.DyeingProductionOrder != 0) { var h = entities.TblDyeingOrdersHeaders.SingleOrDefault(x => x.DyeingProductionOrder == header.DyeingProductionOrder); if (h != null) { h.DocPlan = header.DocPlan; h.TransactionDate = header.TransactionDate; h.Vendor = header.Vendor; } } else { entities.AddToTblDyeingOrdersHeaders(header); } entities.SaveChanges(); foreach (var item in Maindetails) { if (item.DyeingProductionOrder == 0) { item.DyeingProductionOrder = header.DyeingProductionOrder; entities.AddToTblDyeingOrdersMainDetails(item); } else { var mainDetailRow = (from d in entities.TblDyeingOrdersMainDetails where d.TransId == item.TransId && d.TransactionType == item.TransactionType && d.DyeingProductionOrder == item.DyeingProductionOrder select d).SingleOrDefault(); if (mainDetailRow != null) { GenericUpdate(mainDetailRow, item, entities); } else { entities.AddToTblDyeingOrdersMainDetails(item); } } entities.SaveChanges(); if (item.DyeingProductionOrder != 0) { foreach (var items in item.TblDyeingOrdersDetails.ToList()) { var dyeingOrderDetails = (from d in entities.TblDyeingOrdersDetails where d.Iserial == items.Iserial && d.TransactionType == item.TransactionType select d).SingleOrDefault(); if (dyeingOrderDetails != null) { GenericUpdate(dyeingOrderDetails, items, entities); } else { items.TblDyeingOrdersMainDetail = null; entities.AddToTblDyeingOrdersDetails(items); } entities.SaveChanges(); } } } } return(Maindetails); }
public void PurchaseDyeingServicesToAx(TblDyeingOrdersHeader objToPost, TblDyeingOrdersMainDetail headerObjToPost, int postPostOrNo, int userIserial, string transactionGuid) { using (var context = new WorkFlowManagerDBEntities()) { using (var axapta = new Axapta()) { var credential = new NetworkCredential("bcproxy", "around1"); TblAuthUser userToLogin = context.TblAuthUsers.SingleOrDefault(x => x.Iserial == userIserial); axapta.LogonAs(userToLogin.User_Win_Login, userToLogin.User_Domain, credential, "Ccm", null, null, null); var inventTable = axapta.CreateAxaptaRecord("InventDim"); try { var vendorWmsLocation = context.GetWmsLocations.FirstOrDefault(x => x.VENDID == objToPost.Vendor); var vendorLoc = context.GetLocations.FirstOrDefault(x => x.INVENTLOCATIONID == vendorWmsLocation.INVENTLOCATIONID); var purchId = "Rc_ " + objToPost.DocPlan.ToString() + objToPost.DyeingProductionOrder + headerObjToPost.TransId.ToString() + headerObjToPost.TransactionType; var tableName = "PurchTable"; purchId = GenerateNewPurchase(purchId); var purchTableRecord = axapta.CreateAxaptaRecord(tableName); purchTableRecord.Clear(); purchTableRecord.InitValue(); purchTableRecord.set_Field("PurchId", purchId); purchTableRecord.set_Field("DeliveryDate", headerObjToPost.TblDyeingOrdersDetails.OrderByDescending(x => x.EstimatedDeliveryDate).FirstOrDefault().EstimatedDeliveryDate ?? DateTime.Now); var headerax = axapta.CallStaticRecordMethod("VendTable", "find", objToPost.Vendor) as AxaptaRecord; purchTableRecord.Call("initFromVendTable", headerax); purchTableRecord.Insert(); foreach (var item in headerObjToPost.TblDyeingOrdersDetails) { tableName = "PurchLine"; foreach (var servicerow in item.DyeingOrderDetailsServices) { var axaptaRecord = axapta.CreateAxaptaRecord(tableName); axaptaRecord.Clear(); axaptaRecord.InitValue(); inventTable.Clear(); inventTable.set_Field("InventLocationId", vendorLoc.INVENTLOCATIONID); inventTable.set_Field("wMSLocationId", vendorWmsLocation.WMSLOCATIONID); if (item.Color != null) { inventTable.set_Field("InventColorId", item.Color); } var importNew = axapta.CreateAxaptaObject("CreateProductionJournals"); var producationOrder = "Free"; using (var model = new ax2009_ccEntities()) { var firstOrDefault = model.PRODCONNECTIONs.FirstOrDefault( x => x.DYEDITEM == item.DyedFabric && x.TRANSID == item.DyeingProductionOrder && x.TOCONFIG == item.Color && x.PRODID != ""); if (firstOrDefault != null) { producationOrder = firstOrDefault.PRODID; } } if (producationOrder == null || (string)producationOrder == "") { producationOrder = "Free"; } importNew.Call("CreateConfig", servicerow.ServiceCode, item.Color); importNew.Call("CreateBatch", servicerow.ServiceCode, producationOrder); inventTable.set_Field("configId", item.Color); inventTable.set_Field("inventBatchId", producationOrder); inventTable.set_Field("INVENTSITEID", vendorLoc.INVENTSITEID); inventTable = axapta.CallStaticRecordMethod("InventDim", "findOrCreate", inventTable) as AxaptaRecord; if (inventTable != null) { var tempx = inventTable.get_Field("inventDimId").ToString(); axaptaRecord.set_Field("InventDimId", tempx); } axaptaRecord.set_Field("PurchUnit", "Kg"); axaptaRecord.set_Field("ItemId", servicerow.ServiceCode); axaptaRecord.set_Field("purchId", purchId); axaptaRecord.set_Field("QtyOrdered", Convert.ToDecimal(item.CalculatedTotalQty.ToString())); decimal price = 1; price = (decimal)servicerow.Qty; axaptaRecord.set_Field("PurchPrice", Convert.ToDecimal(price)); axaptaRecord.set_Field("PurchQty", Convert.ToDecimal(item.CalculatedTotalQty.ToString())); axaptaRecord.set_Field("LineAmount", Convert.ToDecimal(price * (decimal)item.CalculatedTotalQty)); axaptaRecord.Call("createLine", true, true, false, true, true, false); } } if (postPostOrNo == 1) { var importNew = axapta.CreateAxaptaObject("CreateProductionJournals"); importNew.Call("PostPurchaseOrder", purchId, objToPost.TransactionDate ?? DateTime.Now); PickingListForAxServices(objToPost, headerObjToPost, postPostOrNo, userIserial, transactionGuid); } } catch (Exception ex) { throw new Exception(ex.Message); } finally { axapta.Logoff(); } } } }