コード例 #1
0
        public static void SaveTransaction(OIGE_GoodsIssues obj)
        {
            lock (Extensions.Locker)
            {
                var db = ContextFactory.GetDBContext();

                var transfers = obj.IGE1_GoodsIssueDetail.Select(t => new OINM_Transaction(obj, t)).ToList();

                transfers.ForEach(t => db.OINM_Transaction.Add(t));

                ContextFactory.SaveChanges();

                //Actualizar existencias

                //var articles = (from detail in obj.IGE1_GoodsIssueDetail
                //                join article in db.OITW_BranchArticles on detail.ItemCode equals article.ItemCode
                //                where article.WhsCode == detail.WhsCode
                //                select article).ToList();

                //articles.ForEach(a =>
                //{
                //    var detail = obj.IGE1_GoodsIssueDetail.FirstOrDefault(d => d.ItemCode == a.ItemCode);
                //    a.OnHand = a.OnHand - detail.Quantity;
                //    a.OnHand1 = a.OnHand1 - detail.Quantity;
                //});

                //ContextFactory.SaveChanges();

                StoredCallbackProcessor.UpdateStock();
            }
        }
コード例 #2
0
        public static bool SaveDetails(OIGE_GoodsIssues SelectedGoodsIssues, OITB_Groups SelectedGroup, UMovement SelectedMovement)
        {
            bool needUpdate = false;

            lock (Extensions.Locker)
            {
                var db = ContextFactory.GetDBContext();

                SelectedGoodsIssues.ItmsGrpCod = SelectedGroup.ItmsGrpCod;

                SelectedGoodsIssues.IdMovement = SelectedMovement.Code;

                //SelectedGoodsIssues.IGN1_GoodsReceiptDetail = GoodsIssuesDetails;

                //if (!db.OIGE_GoodsIssues.Any(g => g.IdGoodIssueL == SelectedGoodsIssues.IdGoodIssueL))
                //{
                //    //GoodsIssuesDetails.ToList().ForEach(d => SelectedGoodsIssues.IGE1_GoodsIssueDetail.Add(d));
                //    needUpdate = true;
                //    db.OIGE_GoodsIssues.Add(SelectedGoodsIssues);
                //}
                if (SelectedGoodsIssues.IdGoodIssueL == 0)
                {
                    db.OIGE_GoodsIssues.Add(SelectedGoodsIssues);
                }
                else if (db.Entry(SelectedGoodsIssues).State == EntityState.Modified)
                {
                    SelectedGoodsIssues.ModifiedDateL = DateTime.Now;
                    SelectedGoodsIssues.ModifiedByL   = Config.CurrentUser;
                }

                ContextFactory.SaveChanges();
            }
            return(needUpdate);
        }
コード例 #3
0
        private static OIGE_GoodsIssues SyncUpload(OIGE_GoodsIssues good)
        {
            var result = WebApiClient.AddGoodIssue(good).Result;

            good.UpdateModelPropertiesFrom(result.Model);
            good.StateL = LocalStatus.Procesado;
            result.UpdateEntityVersion();
            GoodIssuesHelper.SaveTransaction(good);
            return(good);
        }
コード例 #4
0
        public override void ExecuteNewCommand()
        {
            FormTitle = "Nueva Salida";

            SelectedGoodsIssues = new OIGE_GoodsIssues();
            SelectedGroup       = null;
            SelectedMovement    = null;
            GoodsIssuesDetails  = new ObservableCollection <IGE1_GoodsIssueDetail>();
            IsEnabled           = true;
            ShowDialog(new GoodIssuesView(), this, resizeMode: ResizeMode.CanResize);
        }
コード例 #5
0
 public static OIGE_GoodsIssues Synchronize(OIGE_GoodsIssues model)
 {
     CheckForUpdates();// Actualizar cambios antes de subir y verificar si el objeto no fue ya procesado
     model = GoodIssuesHelper.Get(model.IdGoodIssueL);
     if (model.StateL != LocalStatus.Procesado)
     {
         return(model.Upload(SyncUpload));
     }
     else
     {
         return(model);
     }
 }
コード例 #6
0
        public static void DeleteGoodsReceipt(OIGE_GoodsIssues selectedGoodsIssues)
        {
            if (selectedGoodsIssues == null)
            {
                return;
            }

            lock (Extensions.Locker)
            {
                var db = ContextFactory.GetDBContext();

                if (selectedGoodsIssues.IdGoodIssueL != 0)
                {
                    db.OIGE_GoodsIssues.Remove(selectedGoodsIssues);
                }
            }
        }
コード例 #7
0
        public static void Process(InventoryCount selectedInventoryCount)
        {
            lock (Extensions.Locker)
            {
                var db = ContextFactory.GetDBContext();

                ContextFactory.SaveChanges();

                var diferencias = (
                    from t0 in db.InventoryCountDetail// selectedInventoryCount.InventoryCountDetail //Conteo fisico
                    join t1 in  db.OITW_BranchArticles on t0.ItemCode equals t1.ItemCode
                    join t2 in db.UMovements_Acc on t0.ItemCode equals t2.U_ITEMCODE
                    where t1.WhsCode.Equals(Config.WhsCode) && (t0.Quantity - t1.OnHand1) != 0 &&
                    t0.IdInventoryCountL == selectedInventoryCount.IdInventoryCountL &&
                    (t2.U_IDMOVIMIENTO.Equals("1") || t2.U_IDMOVIMIENTO.Equals("2"))
                    select new {
                    itemcode = t0.ItemCode,
                    whscode = t1.WhsCode,
                    Acc = t2.U_CUENTA,
                    dif = t0.Quantity - t1.OnHand1,
                    tipo = t2.U_IDMOVIMIENTO
                }
                    ).ToList();

                var entradas = diferencias.Where(c => c.dif > 0 && c.tipo.Equals("1")).ToList();
                var salidas  = diferencias.Where(c => c.dif < 0 && c.tipo.Equals("2")).ToList();

                //Crear entradas y salidas


                var receipt = new OIGN_GoodsReceipt()
                {
                    Comments   = "Ajuste Entrada por Conteo Fisico - SIGI",
                    IdMovement = "1",
                    ItmsGrpCod = selectedInventoryCount.ItmsGrpCod
                };

                var issue = new OIGE_GoodsIssues()
                {
                    Comments   = "Ajuste de Salida por Conteo Fisico - SIGI",
                    IdMovement = "2",
                    ItmsGrpCod = selectedInventoryCount.ItmsGrpCod
                };


                if (salidas.Any())
                {
                    //agregar detalles
                    salidas.ForEach(d => {
                        var article = db.OITM_Articles.FirstOrDefault(c => c.ItemCode == d.itemcode);

                        issue.IGE1_GoodsIssueDetail.Add(new IGE1_GoodsIssueDetail()
                        {
                            ItemCode   = article.ItemCode,
                            Dscription = article.ItemName,
                            Quantity   = d.dif * -1,
                            UnitMsr    = article.InvntryUom,
                            AcctCode   = d.Acc ?? Config.DefaultAcc,
                        });
                    });
                    db.OIGE_GoodsIssues.Add(issue);
                    ContextFactory.SaveChanges();
                }
                if (entradas.Any())
                {
                    //agregar detalles
                    entradas.ForEach(d => {
                        var article = db.OITM_Articles.FirstOrDefault(c => c.ItemCode == d.itemcode);

                        receipt.IGN1_GoodsReceiptDetail.Add(new IGN1_GoodsReceiptDetail()
                        {
                            ItemCode   = article.ItemCode,
                            Dscription = article.ItemName,
                            Quantity   = d.dif,
                            UnitMsr    = article.InvntryUom,
                            AcctCode   = d.Acc ?? Config.DefaultAcc,
                        });
                    });
                    db.OIGN_GoodsReceipt.Add(receipt);
                    ContextFactory.SaveChanges();
                }

                //Luego de creados lo ajustes marcar como procesado el conteo

                selectedInventoryCount.StateL = LocalStatus.Procesado;
                ContextFactory.SaveChanges();

                //procesar entradas
                if (receipt.IGN1_GoodsReceiptDetail.Any())
                {
                    Synchronization.Synchronize(receipt);
                }

                //Procesar salida
                if (issue.IGE1_GoodsIssueDetail.Any())
                {
                    Synchronization.Synchronize(issue);
                }

                ContextFactory.SaveChanges();
            }
        }
コード例 #8
0
 public static Task <Synchro <OIGE_GoodsIssues> > AddGoodIssue(OIGE_GoodsIssues goodIssue)
 {
     return(PostAsync <OIGE_GoodsIssues, Synchro <OIGE_GoodsIssues> >("api/GoodsIssues", goodIssue));
 }