示例#1
0
        public void GenerateDyeingOrdersAcc(int iserial)
        {
            using (var entities = new WorkFlowManagerDBEntities())
            {
                var planHeader = entities.TblDyeingPlanHeaderAccs.SingleOrDefault(x => x.Iserial == iserial);
                planHeader.PlanGenerated = true;

                var dyeingSummaryList = entities.TblDyeingSummaryAccs.Where(x => x.DyeingHeader == planHeader.Iserial).ToList();
                var vendorList        = dyeingSummaryList.Select(x => x.Vendor).Distinct().ToList();

                foreach (var item in vendorList)
                {
                    var dyeingHeaderRow = new TblDyeingOrdersHeaderAcc {
                        DocPlan = planHeader.DocNo, Vendor = item
                    };

                    entities.AddToTblDyeingOrdersHeaderAccs(dyeingHeaderRow);
                    entities.SaveChanges();

                    const int transId     = 1;
                    var       mainDetails = new TblDyeingOrdersMainDetailsACC
                    {
                        DyeingProductionOrder = dyeingHeaderRow.DyeingProductionOrder,
                        WareHouse             = planHeader.Location,
                        TransactionType       = 0,
                        TransId = transId,
                        Posted  = false
                    };
                    entities.AddToTblDyeingOrdersMainDetailsACCs(mainDetails);
                    entities.SaveChanges();

                    var summarylist = dyeingSummaryList.Where(x => x.Vendor == item).ToList();
                    var sub         = new ObservableCollection <TblDyeingOrdersDetailsAcc>();
                    foreach (var dyeingObject in summarylist)
                    {
                        sub.Add(new TblDyeingOrdersDetailsAcc
                        {
                            Size  = dyeingObject.Size,
                            Color = dyeingObject.Color,

                            DyedFabric            = dyeingObject.DyedFabric,
                            Unit                  = dyeingObject.Unit,
                            CalculatedTotalQty    = Convert.ToSingle(dyeingObject.CalculatedTotalQty),
                            FabricCode            = dyeingObject.FabricCode,
                            DyeingProductionOrder = dyeingHeaderRow.DyeingProductionOrder,
                            TransactionType       = mainDetails.TransactionType,
                            TransId               = mainDetails.TransId,
                        });
                    }

                    foreach (var orderDetails in sub)
                    {
                        entities.AddToTblDyeingOrdersDetailsAccs(orderDetails);
                        entities.SaveChanges();
                    }
                }
            }
        }
示例#2
0
        public List <TblDyeingOrdersHeaderAcc> DyeingOrderHeaderSearchListAcc(TblDyeingOrdersHeaderAcc header)
        {
            using (var entities = new WorkFlowManagerDBEntities())
            {
                var d = (from h in entities.TblDyeingOrdersHeaderAccs
                         where h.DocPlan.Contains(header.DocPlan) &&
                         (h.TransactionDate == header.TransactionDate || header.TransactionDate == null) &&
                         h.Vendor.Contains(header.Vendor)
                         select h).ToList();

                return(d);
            }
        }
示例#3
0
        private void PickingListForAxServicesAcc(TblDyeingOrdersHeaderAcc objToPost, TblDyeingOrdersMainDetailsACC 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.TblDyeingOrdersDetailsAccs)
                    {
                        foreach (var service in item.DyeingOrderDetailsServicesAccs)
                        {
                            AxaptaRecord = axapta.CreateAxaptaRecord(tableName);
                            AxaptaRecord.Clear();
                            AxaptaRecord.InitValue();
                            AxaptaRecord.set_Field("TRANSID", item.DyeingProductionOrder);
                            AxaptaRecord.set_Field("RAWID", service.ServiceCode);
                            AxaptaRecord.set_Field("DYEDITEM", service.ServiceCode);
                            AxaptaRecord.set_Field("RAWQTY", item.CalculatedTotalQty);
                            AxaptaRecord.set_Field("DYEDQTY", item.CalculatedTotalQty);
                            //AxaptaRecord.set_Field("UNITID", item.Unit);
                            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(2));
                            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();
                        }
                    }
                    //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, 2, "Name", postPostOrNo);

                    axapta.Logoff();
                }

                catch (Exception)
                {
                    axapta.Logoff();
                    throw;
                }
            }
        }
示例#4
0
        public List <TblDyeingOrdersMainDetailsACC> SaveDyeingOrderAcc(TblDyeingOrdersHeaderAcc header, List <TblDyeingOrdersMainDetailsACC> Maindetails)
        {
            using (var entities = new WorkFlowManagerDBEntities())
            {
                if (header.DyeingProductionOrder != 0)
                {
                    var h = entities.TblDyeingOrdersHeaderAccs.SingleOrDefault(x => x.DyeingProductionOrder == header.DyeingProductionOrder);

                    if (h != null)
                    {
                        h.DocPlan         = header.DocPlan;
                        h.TransactionDate = header.TransactionDate;
                        h.Vendor          = header.Vendor;
                    }
                }
                else
                {
                    entities.AddToTblDyeingOrdersHeaderAccs(header);
                }
                entities.SaveChanges();

                foreach (var item in Maindetails)
                {
                    if (item.DyeingProductionOrder == 0)
                    {
                        item.DyeingProductionOrder = header.DyeingProductionOrder;
                        entities.AddToTblDyeingOrdersMainDetailsACCs(item);
                    }
                    else
                    {
                        var mainDetailRow = (from d in entities.TblDyeingOrdersMainDetailsACCs
                                             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.AddToTblDyeingOrdersMainDetailsACCs(item);
                        }
                    }
                    entities.SaveChanges();

                    if (item.DyeingProductionOrder != 0)
                    {
                        foreach (var items in item.TblDyeingOrdersDetailsAccs.ToList())
                        {
                            var dyeingOrderDetails = (from d in entities.TblDyeingOrdersDetailsAccs
                                                      where d.Iserial == items.Iserial && d.TransactionType == item.TransactionType
                                                      select d).SingleOrDefault();
                            if (dyeingOrderDetails != null)
                            {
                                GenericUpdate(dyeingOrderDetails, items, entities);
                            }
                            else
                            {
                                items.TblDyeingOrdersMainDetailsACC = null;
                                entities.AddToTblDyeingOrdersDetailsAccs(items);
                            }
                            entities.SaveChanges();
                        }
                    }
                }
            }
            return(Maindetails);
        }
示例#5
0
        public void PurchaseDyeingServicesToAxAcc(TblDyeingOrdersHeaderAcc objToPost, TblDyeingOrdersMainDetailsACC 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;

                    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.SingleOrDefault(x => x.VENDID == objToPost.Vendor);

                        var vendorLoc =
                            context.GetLocations.SingleOrDefault(x => x.INVENTLOCATIONID == vendorWmsLocation.INVENTLOCATIONID);
                        var purchId          = "Rc_ " + headerObjToPost.DyeingProductionOrder.ToString() + headerObjToPost.TransId.ToString() + headerObjToPost.TransactionType;
                        var tableName        = "PurchTable";
                        var purchTableRecord = axapta.CreateAxaptaRecord(tableName);
                        purchTableRecord.Clear();
                        purchTableRecord.InitValue();

                        purchTableRecord.set_Field("PurchId", purchId);
                        purchTableRecord.set_Field("DeliveryDate", headerObjToPost.TblDyeingOrdersDetailsAccs.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.TblDyeingOrdersDetailsAccs)
                        {
                            tableName = "PurchLine";
                            foreach (var servicerow in item.DyeingOrderDetailsServicesAccs)
                            {
                                var axaptaRecord = axapta.CreateAxaptaRecord(tableName);
                                axaptaRecord.Clear();
                                axaptaRecord.InitValue();

                                inventTable.Clear();
                                inventTable.set_Field("InventLocationId", vendorLoc.INVENTLOCATIONID);
                                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 batch = item.BatchNo.ToString();

                                    var firstOrDefault = model.PRODCONNECTIONs.FirstOrDefault(
                                        x =>
                                        x.DYEDITEM == item.DyedFabric && x.TRANSID == item.DyeingProductionOrder &&
                                        x.FROMCONFIG == item.Color &&
                                        // x.FROMBATCH == batch &&
                                        x.JOURNALLINKID == item.TransId);
                                    if (firstOrDefault != null)
                                    {
                                        producationOrder =
                                            firstOrDefault.PRODID;
                                    }
                                }
                                if (producationOrder == null || 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 = 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("ItemId", servicerow.ServiceCode);
                                axaptaRecord.set_Field("purchId", purchId);
                                axaptaRecord.set_Field("QtyOrdered", Convert.ToDecimal(item.CalculatedTotalQty.ToString()));
                                decimal price = 1;

                                //context.TblTradeAgreementDetails.Where(x => x.ItemCode == servicerow.ServiceCode && x.TblTradeAgreementHeader1.Vendor == objToPost.Vendor);
                                axaptaRecord.set_Field("PurchPrice", Convert.ToDecimal(price));
                                axaptaRecord.set_Field("PurchQty", Convert.ToDecimal(item.CalculatedTotalQty.ToString()));
                                axaptaRecord.set_Field("LineAmount", Convert.ToDecimal(item.CalculatedTotalQty.ToString()) * price);
                                axaptaRecord.Call("createLine", true, true, true, true, true, false);
                            }
                            //No errors occured, Commit!
                            //Axapta.TTSCommit();

                            if (postPostOrNo == 1)
                            {
                                var importNew = axapta.CreateAxaptaObject("CreateProductionJournals");
                                importNew.Call("PostPurchaseOrder", purchId, objToPost.TransactionDate ?? DateTime.Now);
                                PickingListForAxServicesAcc(objToPost, headerObjToPost, postPostOrNo, userIserial,
                                                            transactionGuid);
                            }
                        }
                    }

                    catch (Exception ex)
                    {
                        //There was some errors, Abort transaction and Raise error!
                        //Axapta.TTSAbort();
                        throw new Exception(ex.Message);
                    }
                    finally
                    {
                        //Finally logoff the Axapta Session
                        axapta.Logoff();
                    }
                }
            }
        }