public static bool SaveNewDetailsCommand(OIGN_GoodsReceipt SelectedGoodsReceipt, OITB_Groups SelectedGroup, UMovement SelectedMovement) { bool needUpdate = false; lock (Extensions.Locker) { var db = ContextFactory.GetDBContext(); SelectedGoodsReceipt.ItmsGrpCod = SelectedGroup.ItmsGrpCod; SelectedGoodsReceipt.IdMovement = SelectedMovement.Code; //SelectedGoodsReceipt.IGN1_GoodsReceiptDetail = GoodsReceiptsDetails; //if (!db.OIGN_GoodsReceipt.Any(g => g.IdGoodReceiptL == SelectedGoodsReceipt.IdGoodReceiptL)) //{ // //GoodsReceiptsDetails.ToList().ForEach(d => SelectedGoodsReceipt.IGN1_GoodsReceiptDetail.Add(d)); // needUpdate = true; // db.OIGN_GoodsReceipt.Add(SelectedGoodsReceipt); //} if (SelectedGoodsReceipt.IdGoodReceiptL == 0) { db.OIGN_GoodsReceipt.Add(SelectedGoodsReceipt); } else if (db.Entry(SelectedGoodsReceipt).State == EntityState.Modified) { SelectedGoodsReceipt.ModifiedDateL = DateTime.Now; SelectedGoodsReceipt.ModifiedByL = Config.CurrentUser; } ContextFactory.SaveChanges(); } return(needUpdate); }
public static void SaveTransaction(OIGN_GoodsReceipt obj) { lock (Extensions.Locker) { var db = ContextFactory.GetDBContext(); var transfers = obj.IGN1_GoodsReceiptDetail.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.IGN1_GoodsReceiptDetail // 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.IGN1_GoodsReceiptDetail.FirstOrDefault(d => d.ItemCode == a.ItemCode); // a.OnHand = a.OnHand + detail.Quantity; // a.OnHand1 = a.OnHand1 + detail.Quantity; //}); //ContextFactory.SaveChanges(); StoredCallbackProcessor.UpdateStock(); } }
private static OIGN_GoodsReceipt SyncUpload(OIGN_GoodsReceipt receipt) { var result = WebApiClient.AddGoodReceipt(receipt).Result; receipt.UpdateModelPropertiesFrom(result.Model); receipt.StateL = LocalStatus.Procesado; result.UpdateEntityVersion(); GoodsReceiptHelper.SaveTransaction(receipt); return(receipt); }
public override void ExecuteNewCommand() { FormTitle = "Nueva Entrada"; SelectedGoodsReceipt = new OIGN_GoodsReceipt(); SelectedGroup = null; SelectedMovement = null; GoodsReceiptsDetails = new ObservableCollection <IGN1_GoodsReceiptDetail>(); IsEnabled = true; ShowDialog(new GoodsReceiptView(), this, resizeMode: ResizeMode.CanResize); }
public static OIGN_GoodsReceipt Synchronize(OIGN_GoodsReceipt model) { CheckForUpdates();// Actualizar cambios antes de subir y verificar si el objeto no fue ya procesado model = GoodsReceiptHelper.Get(model.IdGoodReceiptL); if (model.StateL != LocalStatus.Procesado) { return(model.Upload(SyncUpload)); } else { return(model); } }
public static void DeleteGoodsReceipt(OIGN_GoodsReceipt selectedGoodsReceipt) { if (selectedGoodsReceipt == null) { return; } lock (Extensions.Locker) { var db = ContextFactory.GetDBContext(); if (selectedGoodsReceipt.IdGoodReceiptL > 0) { // selectedGoodsReceipt.IGN1_GoodsReceiptDetail.ForEach(d => d.ChangeEntityState(EntityState.Deleted)); db.OIGN_GoodsReceipt.Remove(selectedGoodsReceipt); } } }
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 <OIGN_GoodsReceipt> > AddGoodReceipt(OIGN_GoodsReceipt receipt) { return(PostAsync <OIGN_GoodsReceipt, Synchro <OIGN_GoodsReceipt> >("api/GoodsReceipts", receipt)); }