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(); } }
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); }
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); }
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); }
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); } }
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); } } }
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(); } }
public static Task <Synchro <OIGE_GoodsIssues> > AddGoodIssue(OIGE_GoodsIssues goodIssue) { return(PostAsync <OIGE_GoodsIssues, Synchro <OIGE_GoodsIssues> >("api/GoodsIssues", goodIssue)); }