public static void CreateMateriaPrima(MpProduct mp) { cn = DBConnection.MainConnection(); try { using (OleDbCommand cmd = cn.CreateCommand()) { cmd.CommandText = @"INSERT INTO materia_prima ([codigo],[unidad_metrica],[nombre_producto],[conversion_unitaria],[unidad_muestra]) " + "VALUES (@codProd,@uniMetrica,@nombre,@conversion,@uniMuestra) "; cmd.Parameters.AddRange(new OleDbParameter[] { new OleDbParameter("@codProd", mp.Id), new OleDbParameter("@uniMetrica", mp.UnidadMetrica), new OleDbParameter("@nombre", mp.NombreProducto), new OleDbParameter("@conversion", mp.Conversion), new OleDbParameter("@uniMuestra", mp.UnidadMuestra) }); cmd.ExecuteNonQuery(); } cn.Close(); } catch (Exception ex) { System.Windows.MessageBox.Show("Error al crear Entrada de Producto Terminado en el Inventario " + ex); } }
public void OpenNewModal(object parameter) { var test = new NewMpModal(this); NewProduct = new MpProduct(); test.ShowDialog(); }
public void updateCollectionInstance(MpProduct updatedInstance) { SelectedMP.Id = updatedInstance.Id; SelectedMP.NombreProducto = updatedInstance.NombreProducto; SelectedMP.Conversion = updatedInstance.Conversion; SelectedMP.UnidadMetrica = updatedInstance.UnidadMetrica; SelectedMP.UnidadMuestra = updatedInstance.UnidadMuestra; }
// Удаление позиций private static void DeletePositions() { var doc = AcApp.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = HostApplicationServices.WorkingDatabase; var opts = new PromptSelectionOptions { MessageForAdding = "\n" + Language.GetItem(LangItem, "h5") + ": " }; var res = ed.GetSelection(opts); if (res.Status != PromptStatus.OK) { return; } using (var tr = db.TransactionManager.StartTransaction()) { try { foreach (var objectId in res.Value.GetObjectIds()) { var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite); // Расширенные данные в виде спец.класса var productInsert = (MpProductToSave)XDataHelpersForProducts.NewFromEntity(ent); if (productInsert == null) { continue; } // Теперь получаем сам продукт var product = MpProduct.GetProductFromSaved(productInsert); // Если есть данные и нет позиции if (product != null) { product.Position = string.Empty; XDataHelpersForProducts.SaveDataToEntity(product.SetProductToSave(), ent, tr); } } } catch (Exception ex) { ExceptionBox.Show(ex); } finally { // В любом случае убираем подсветку со всех объектов foreach (var objectId in res.Value.GetObjectIds()) { var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite); ent.Unhighlight(); } tr.Commit(); } } }
public void OpenUpdateModal(object parameter) { NewProduct = new MpProduct(SelectedMP); /*NewProduct = new MpProduct(); * SelectedMP = new MpProduct();*/ NewModal = new EditMpModal(this); NewModal.ShowDialog(); }
public static List <MpProduct> GetMP() { var mp = new List <MpProduct>(); cn = DBConnection.MainConnection(); try { cmd = new OleDbCommand("SELECT SUM(cantidad_unidad_lote) as Cantidad_Actual, SUM(cantidad_original) as Cantidad_Original, SUM(cantidad_unidad_formula) as Cantidad_Formula, lote_entrada.cod_mp, materia_prima.nombre_producto, materia_prima.conversion_unitaria, materia_prima.unidad_muestra, materia_prima.unidad_metrica " + "FROM lote_entrada INNER JOIN materia_prima on materia_prima.codigo = lote_entrada.cod_mp " + "GROUP BY cod_mp, materia_prima.nombre_producto, materia_prima.conversion_unitaria, materia_prima.unidad_muestra, materia_prima.unidad_metrica;", cn); dr = cmd.ExecuteReader(); while (dr.Read()) { MpProduct temp = new MpProduct(); temp.Id = dr["cod_mp"].ToString(); temp.NombreProducto = dr["nombre_producto"].ToString(); //temp.Precio = float.Parse(dr["precio"].ToString()); temp.UnidadMetrica = dr["unidad_metrica"].ToString(); temp.UnidadMuestra = dr["unidad_muestra"].ToString(); temp.Conversion = double.Parse(dr["conversion_unitaria"].ToString()); temp.Entrada = double.Parse(dr["Cantidad_Original"].ToString()); temp.Existencia = double.Parse(dr["Cantidad_Actual"].ToString()); temp.Salida = temp.Entrada - temp.Existencia; temp.CantidadExacta = double.Parse(dr["Cantidad_Formula"].ToString()); mp.Add(temp); } dr.Close(); cn.Close(); } catch (Exception ex) { System.Windows.MessageBox.Show("Error al buscar el inventario de materia prima " + ex.ToString()); } return(mp); }
/* * * public static void removeInventarioMpAfterLoteActive(string codMp, double existencia, double cantidadExacta) * { * * cn = DBConnection.MainConnection(); * try * { * * * * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET existencia = (existencia + " + existencia + "), cantidad_exacta = (cantidad_exacta + " + cantidadExacta + " ), salida = (salida - " + existencia + " ) " + * "where codigo = '" + codMp + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al borar existencia the MP " + ex); * } * * } * * public static void removeFlatAmounts(string codMP, double formUnitAmount, double CurrentDisplayAmount, double displayUnitAmountOriginal) * { * var salida = displayUnitAmountOriginal - CurrentDisplayAmount; * cn = DBConnection.MainConnection(); * try * { * * * * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET entrada = (entrada - " + displayUnitAmountOriginal + "), existencia = (existencia - " + CurrentDisplayAmount + "), cantidad_exacta = (cantidad_exacta - "+formUnitAmount+" ), salida = (salida - " + salida + " ) " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al borar existencia the MP " + ex); * } * * } * * public static void reAddAmount(string codMP, double newEntrada, double newCurrent, double formAmount) * { * var test = newEntrada - newCurrent; * cn = DBConnection.MainConnection(); * try * { * * * * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET entrada = (entrada + " + newEntrada + "), existencia = (existencia + " + newCurrent + "), cantidad_exacta = (cantidad_exacta + " + formAmount + "), salida = (salida + "+ test + ") " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al reingresar existencia the MP " + ex); * } * } * * public static void exitAmounts(String codMP, double existencia, double cantidadExacta) * { * cn = DBConnection.MainConnection(); * try * { * * * * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET existencia = (existencia - " + existencia + "), cantidad_exacta = (cantidad_exacta - " + cantidadExacta + " ), salida = (salida + " + existencia + " ) " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al eliminar existencia the MP " + ex); * } * * System.Windows.MessageBox.Show("Cantidad Actualizada en Inventario Materia Prima"); * } * * * * public static void updateProductAmountAdd(string codMP, double amountChange) * { * cn = DBConnection.MainConnection(); * try * { * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET entrada = (entrada + " + amountChange + "), existencia = (existencia + " + amountChange + "), cantidad_exacta = (cantidad_exacta + (" + amountChange + " * conversion_unitaria) ) " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al actualizar existencia the MP " + ex); * } * } * * public static void updateProductAmountRemove(string codMP, double amountChange) * { * cn = DBConnection.MainConnection(); * try * { * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET salida = (salida + " + amountChange + "), existencia = (existencia + " + amountChange + "), cantidad_exacta = (cantidad_exacta + (" + amountChange + " * conversion_unitaria) ) " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al actualizar existencia the MP " + ex); * } * } * * public static void updateProductAmountFromExactRemove(string codMP, double amountChangeExact) * { * cn = DBConnection.MainConnection(); * * double conversion = 0.00; * * * try * { * cmd = new OleDbCommand("SELECT conversion_unitaria from materia_prima where codigo = '" + codMP + "' ; ", cn); * dr = cmd.ExecuteReader(); * * * * * * while (dr.Read()) * { * conversion = double.Parse(dr["conversion_unitaria"].ToString()); * * * } * * dr.Close(); * * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al obtener conversion " + ex); * } * * * * * try * { * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET salida = (salida + " + Math.Round((amountChangeExact / conversion), 2, MidpointRounding.AwayFromZero) + "), existencia = (existencia + " + Math.Round((amountChangeExact / conversion), 2, MidpointRounding.AwayFromZero) + "), cantidad_exacta = (cantidad_exacta + " + amountChangeExact + " ) " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al actualizar existencia the MP Exact - " + ex); * } * } * * public static void updateProductAmountFromtExactAdd(string codMP, double amountChangeExact) * { * cn = DBConnection.MainConnection(); * * * double conversion = 0.00; * * * try * { * cmd = new OleDbCommand("SELECT conversion_unitaria from materia_prima where codigo = '" + codMP + "' ; ", cn); * dr = cmd.ExecuteReader(); * * * * * * while (dr.Read()) * { * conversion = double.Parse(dr["conversion_unitaria"].ToString()); * * * } * * dr.Close(); * * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al obtener conversion " + ex); * } * * * * * * try * { * cmd = new OleDbCommand("UPDATE materia_prima " + * "SET entrada = (entrada + " + Math.Round((amountChangeExact / conversion), 2, MidpointRounding.AwayFromZero) + "), existencia = (existencia + " + Math.Round((conversion / amountChangeExact), 2, MidpointRounding.AwayFromZero) + "), cantidad_exacta = (cantidad_exacta + " + amountChangeExact + " ) " + * "where codigo = '" + codMP + "'; ", cn); * cmd.ExecuteNonQuery(); * * * * * * * cn.Close(); * * } * catch (Exception ex) * { * System.Windows.MessageBox.Show("Error al actualizar existencia the MP exact + " + ex); * } * }*/ public static void updateMateriaPrimaInfo(MpProduct mp, string oldId) { cn = DBConnection.MainConnection(); try { cmd = new OleDbCommand("UPDATE materia_prima " + "SET codigo = '" + mp.Id + "', nombre_producto = '" + mp.NombreProducto + "', unidad_metrica = '" + mp.UnidadMetrica + "', conversion_unitaria = " + mp.Conversion + ", unidad_muestra = '" + mp.UnidadMuestra + "' " + "where codigo = '" + oldId + "'; ", cn); cmd.ExecuteNonQuery(); cn.Close(); } catch (Exception ex) { System.Windows.MessageBox.Show("Error al actualizar informacion the MP " + ex); } }
public void Limpiar(object parameter) { NewProduct = new MpProduct(); }
private void FindProducts() { try { SpecificationItems = new List <SpecificationItem>(); var products = new List <MpProduct>(); var productsByAttr = new List <SpecificationItem>(); var counts = new List <int>(); var countsByAttr = new List <int>(); for (var i = 0; i < _objectIds.Length; i++) { // Проверяем - если это блок и он имеет атрибуты для спецификации if (ProductsToTable.HasAttributesForSpecification(_tr, _objectIds[i])) { // post progress _context.Post( _ => { ProgressBar.Value = i; ProgressText.Text = i + "/" + _objectIds.Length; }, null); var specificationItemByBlockAttributes = ProductsToTable.GetProductFromBlockByAttributes(_tr, _objectIds[i]); if (specificationItemByBlockAttributes != null) { if ( !productsByAttr.Contains( specificationItemByBlockAttributes, new SpecificationItemHelpers.EqualSpecificationItem())) { productsByAttr.Add(specificationItemByBlockAttributes); countsByAttr.Add(1); } else { for (var j = 0; j < productsByAttr.Count; j++) { if (productsByAttr[j].Position == specificationItemByBlockAttributes.Position & productsByAttr[j].BeforeName == specificationItemByBlockAttributes.BeforeName & productsByAttr[j].Designation == specificationItemByBlockAttributes.Designation & productsByAttr[j].Mass == specificationItemByBlockAttributes.Mass & productsByAttr[j].Note == specificationItemByBlockAttributes.Note) { countsByAttr[j]++; } } } } } else //// Иначе пробуем читать из расширенных данных { var entity = (Entity)_tr.GetObject(_objectIds[i], OpenMode.ForRead); if (!entity.IsModPlusProduct()) { continue; } // post progress _context.Post( _ => { ProgressBar.Value = i; ProgressText.Text = i + "/" + _objectIds.Length; }, null); if (XDataHelpersForProducts.NewFromEntity(entity) is MpProductToSave mpProductToSave) { var productFromSaved = MpProduct.GetProductFromSaved(mpProductToSave); if (productFromSaved != null) { if (!products.Contains(productFromSaved)) { products.Add(productFromSaved); counts.Add(1); } else { var index = products.IndexOf(productFromSaved); counts[index]++; } } } } } if (!products.Any() & !productsByAttr.Any()) { DialogResult = false; Close(); } // Для продуктов собранных из атрибутов вставляем количество for (var i = 0; i < productsByAttr.Count; i++) { productsByAttr[i].Count = countsByAttr[i].ToString(); } // Добавляем продукты собранные из расширенных данных for (var j = 0; j < products.Count; j++) { var specificationItem = products[j].GetSpecificationItem(counts[j]); SpecificationItems.Add(specificationItem); } // Добавляем продукты, собранные из атрибутов foreach (var specificationItem in productsByAttr) { SpecificationItems.Add(specificationItem); } // Сортировка по значению Позиции SpecificationItems.Sort(new SpecificationItemHelpers.AlphanumComparatorFastToSortByPosition()); } catch (Exception exception) { ExceptionBox.Show(exception); } }
public static void AddLeaderWithMark() { var doc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = doc.Database; var res = ed.SelectImplied(); if (res.Status != PromptStatus.OK) { return; } using (doc.LockDocument()) { using (var tr = db.TransactionManager.StartTransaction()) { try { foreach (var objectId in res.Value.GetObjectIds()) { var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite); // Расширенные данные в виде спец.класса var productInsert = (MpProductToSave)XDataHelpersForProducts.NewFromEntity(ent); if (productInsert == null) { continue; } // Теперь получаем сам продукт var product = MpProduct.GetProductFromSaved(productInsert); // Если есть данные и нет позиции if (product != null) { var mark = product.GetNameByRule(); // Если в имени нет ShortName, то добавим if (!mark.Contains(product.BaseDocument.ShortName)) { mark = product.BaseDocument.ShortName + " " + mark; } // Если есть длина if (product.Length != null) { mark += " L=" + product.Length; } AddLeaderMark(ent, mark); } } } catch (Exception ex) { ExceptionBox.Show(ex); } finally { tr.Commit(); } } } }
public void AddPositions() { Statistic.SendCommandStarting(new ModPlusConnector()); var doc = AcApp.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = doc.Database; var opts = new PromptSelectionOptions(); opts.Keywords.Add(Language.GetItem(LangItem, "h2")); var kws = opts.Keywords.GetDisplayString(true); opts.MessageForAdding = "\n" + Language.GetItem(LangItem, "h1") + ": " + kws; opts.KeywordInput += (sender, e) => { if (e.Input.Equals(Language.GetItem(LangItem, "h2"))) { DeletePositions(); } }; var res = ed.GetSelection(opts); if (res.Status != PromptStatus.OK) { return; } using (var tr = db.TransactionManager.StartTransaction()) { try { // Создаем список "элемент + марка" и список позиций var elements = new List <string>(); var elementsExist = new List <string>(); var positions = new List <string>(); var markTypes = new List <int>(); // Тип маркировки foreach (var objectId in res.Value.GetObjectIds()) { var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite); // Расширенные данные в виде спец.класса var productInsert = (MpProductToSave)XDataHelpersForProducts.NewFromEntity(ent); if (productInsert == null) { continue; } // Теперь получаем сам продукт var product = MpProduct.GetProductFromSaved(productInsert); // Если есть данные и нет позиции if (product != null) { int markType; if (string.IsNullOrEmpty(product.Position.Trim())) { var element = product.GetNameByRule(); if (!element.Contains(product.BaseDocument.ShortName)) { element = product.BaseDocument.ShortName + " " + element; } // Если еще не было if (!elements.Contains(element)) { // Подсвечиваем ent.Highlight(); // Запрос пользователю var pso = new PromptStringOptions( Language.GetItem(LangItem, "h3") + ": " + element + ". " + Language.GetItem(LangItem, "h4") + ": ") { AllowSpaces = true }; var pres = ed.GetString(pso); if (pres.Status != PromptStatus.OK) { ent.Unhighlight(); continue; } elements.Add(element); positions.Add(pres.StringResult); product.Position = pres.StringResult; XDataHelpersForProducts.SaveDataToEntity(product.SetProductToSave(), ent, tr); // Маркировка AddPositionMarker(ent, 0, pres.StringResult, element, out markType); // Убираем подсветку ent.Unhighlight(); markTypes.Add(markType); } else //// Если уже был { product.Position = positions[elements.IndexOf(element)]; XDataHelpersForProducts.SaveDataToEntity(product.SetProductToSave(), ent, tr); // Маркировка AddPositionMarker(ent, markTypes[elements.IndexOf(element)], positions[elements.IndexOf(element)], element, out markType); } } // Если позиция уже есть else { // Подсвечиваем ent.Highlight(); var element = product.GetNameByRule(); // Если еще не было if (!elementsExist.Contains(element)) { // Маркировка AddPositionMarker(ent, 0, product.Position, element, out markType); elements.Add(element); elementsExist.Add(element); markTypes.Add(markType); } else { if (markTypes.Count > 0 & elements.Count > 0) { AddPositionMarker(ent, markTypes[elements.IndexOf(element)], product.Position, element, out markType); } else { AddPositionMarker(ent, 0, product.Position, element, out markType); } } // Убираем подсветку ent.Unhighlight(); } } } } catch (Exception ex) { ExceptionBox.Show(ex); } finally { // В любом случае убираем подсветку со всех объектов foreach (var objectId in res.Value.GetObjectIds()) { var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite); ent.Unhighlight(); } tr.Commit(); } } }