//Habilita el step 2 despues de que se ha ingresados un Source Location //Valido private void OnLoadSource(object sender, DataEventArgs <string> e) { //View.Model.SourceData = null; //ClearForms(); if (string.IsNullOrEmpty(e.Value)) { return; } //Get Location Data WpfFront.WMSBusinessService.Label sourceLabel = service.GetLocationData(e.Value, false); //Show Location Data in the List View View.Model.SourceLocation = sourceLabel; //2. Logistic Label if (sourceLabel.LabelType.DocTypeID == LabelType.ProductLabel) { View.ComboProduct.Text = sourceLabel.Product.FullDesc; View.ComboProduct.Product = sourceLabel.Product; LoadUnits(sourceLabel.Product); } EnableExecuteModule(); }
internal void LoadPackages(Document document, Document posted) { //Bloque de los botones si ya es un shipment completado y la opcion de //reorder esta en false btnAddSerial.IsEnabled = true; btnMove.IsEnabled = true; btnMoveSN.IsEnabled = true; btnMoveRetail.IsEnabled = true; btnNew.IsEnabled = true; btnNewBox.IsEnabled = true; btnMovePack.IsEnabled = true; if (posted != null && Util.GetConfigOption("ALWREORDERPK").Equals("F")) { btnAddSerial.IsEnabled = false; btnMove.IsEnabled = false; btnMoveSN.IsEnabled = false; btnMoveRetail.IsEnabled = false; btnNew.IsEnabled = false; btnNewBox.IsEnabled = false; btnMovePack.IsEnabled = false; } WpfFront.WMSBusinessService.Label shipmentLabel; btnCreateShipment.Visibility = Visibility.Visible; brMove.Visibility = Visibility.Collapsed; sourceTree.Items.Refresh(); destTree.Items.Refresh(); Packages = null; if (posted == null) { //SEP 20 - 2010 - Jairo Murillo //Aqui Revisa si el Shipment number debe ser preasignado if (Util.GetConfigOption("PRESHIPMENT").Equals("T")) { if (string.IsNullOrEmpty(document.PostingDocument)) { //Obtain Sequence document.PostingDocument = service.GetNextDocSequence(document.Company, new DocumentType { DocTypeID = SDocType.SalesShipment }).CodeSequence; service.UpdateDocument(document); } shipmentLabel = new WpfFront.WMSBusinessService.Label { LabelCode = "Root of " + document.PostingDocument }; } else shipmentLabel = new WpfFront.WMSBusinessService.Label { LabelCode = "Root of " + document.DocNumber }; } else //Shipment ya creado y posteado { btnCreateShipment.Visibility = Visibility.Collapsed; shipmentLabel = new WpfFront.WMSBusinessService.Label { LabelCode = "Root of " + posted.DocNumber }; } Packages = new List<DocumentPackage>() { new DocumentPackage { Document = document, PostingDocument = posted, PostingDate = posted == null ? null : posted.CreationDate, PostingUserName =posted == null ? null : posted.CreatedBy, PackLabel = shipmentLabel, PackDescExt = shipmentLabel.LabelCode, Sequence = 1, PackageType = "R" } }; curDoc = document; curPosted = posted; LoadTrees(); }
internal void LoadPackages(Document document, Document posted) { //Bloque de los botones si ya es un shipment completado y la opcion de //reorder esta en false btnAddSerial.IsEnabled = true; btnMove.IsEnabled = true; btnMoveSN.IsEnabled = true; btnMoveRetail.IsEnabled = true; btnNew.IsEnabled = true; btnNewBox.IsEnabled = true; btnMovePack.IsEnabled = true; if (posted != null && Util.GetConfigOption("ALWREORDERPK").Equals("F")) { btnAddSerial.IsEnabled = false; btnMove.IsEnabled = false; btnMoveSN.IsEnabled = false; btnMoveRetail.IsEnabled = false; btnNew.IsEnabled = false; btnNewBox.IsEnabled = false; btnMovePack.IsEnabled = false; } WpfFront.WMSBusinessService.Label shipmentLabel; btnCreateShipment.Visibility = Visibility.Visible; brMove.Visibility = Visibility.Collapsed; sourceTree.Items.Refresh(); destTree.Items.Refresh(); Packages = null; if (posted == null) { //SEP 20 - 2010 - Jairo Murillo //Aqui Revisa si el Shipment number debe ser preasignado if (Util.GetConfigOption("PRESHIPMENT").Equals("T")) { if (string.IsNullOrEmpty(document.PostingDocument)) { //Obtain Sequence document.PostingDocument = service.GetNextDocSequence(document.Company, new DocumentType { DocTypeID = SDocType.SalesShipment }).CodeSequence; service.UpdateDocument(document); } shipmentLabel = new WpfFront.WMSBusinessService.Label { LabelCode = "Root of " + document.PostingDocument }; } else { shipmentLabel = new WpfFront.WMSBusinessService.Label { LabelCode = "Root of " + document.DocNumber } }; } else //Shipment ya creado y posteado { btnCreateShipment.Visibility = Visibility.Collapsed; shipmentLabel = new WpfFront.WMSBusinessService.Label { LabelCode = "Root of " + posted.DocNumber }; } Packages = new List <DocumentPackage>() { new DocumentPackage { Document = document, PostingDocument = posted, PostingDate = posted == null ? null : posted.CreationDate, PostingUserName = posted == null ? null : posted.CreatedBy, PackLabel = shipmentLabel, PackDescExt = shipmentLabel.LabelCode, Sequence = 1, PackageType = "R" } }; curDoc = document; curPosted = posted; LoadTrees(); }
private void OnAddLine(object sender, EventArgs e) { //Variables Auxiliares DataRow dr = View.Model.ListRecords.NewRow(); WpfFront.WMSBusinessService.Label EvalSerialLabel = new WpfFront.WMSBusinessService.Label { Bin = new Bin { Location = View.Model.RecordCliente } }; DataInformation DataInformationLabel; List<ShowData> ShowDataList; ShowData ShowData; bool EvalSerial1 = true, EvalSerial2 = true, EvalSerial3 = true; //Validacion de los seriales(tamanos, datos y existencia en el sistema) foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposSeriales) { switch (DataDefinitionByBin.DataDefinition.Code) { case "SERIAL1": if (View.GetSerial1.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial1.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Asigno el serial para evaluar si existe en el sistema EvalSerialLabel.LabelCode = View.GetSerial1.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial1 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial1.Text ? true : false; } break; case "SERIAL2": if (View.GetSerial2.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial2.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Asigno el serial para evaluar si existe en el sistema EvalSerialLabel.PrintingLot = View.GetSerial2.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial2 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial2.Text ? true : false; } break; case "SERIAL3": if (View.GetSerial3.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial3.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Asigno el serial para evaluar si existe en el sistema EvalSerialLabel.Manufacturer = View.GetSerial3.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial3 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial3.Text ? true : false; } break; } } //Analizo si el serial ya esta en la lista y el listado a lo sumo tiene un elemento if (EvalSerial1 && EvalSerial2 && EvalSerial3 && View.Model.ListRecords.Rows.Count > 0) { Util.ShowError("El serial ya existe en el listado de ingresos"); return; } //Analizo si el serial esta en el sistema if (service.GetLabel(EvalSerialLabel).Count() == 0) { Util.ShowError("El serial no existe en el sistema"); return; } //Analizo si el serial esta en el sistema y esta en el Bin Despachos EvalSerialLabel.Bin = BinDespachos; try { //Obtengo el Label EvalSerialLabel = service.GetLabel(EvalSerialLabel).First(); //Obtengo el DataInformation asociado al Label DataInformationLabel = service.GetDataInformation(new DataInformation { Entity = new ClassEntity { ClassEntityID = 20 }, EntityRowID = Int32.Parse(EvalSerialLabel.LabelID.ToString()) }).First(); } catch { Util.ShowError("El serial no se encuentra en el estado " + BinDespachos.BinCode); return; } //Guardo el Label y DataInformation en el listado para control de actualizacion View.Model.ListLabelScann.Add(EvalSerialLabel); View.Model.ListDataInformation.Add(DataInformationLabel); //Evaluo cuales seriales estan visibles para adicionarlos al registro int cont = 3; foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposSeriales) { switch (DataDefinitionByBin.DataDefinition.Code) { case "SERIAL1": dr[cont] = EvalSerialLabel.LabelCode; break; case "SERIAL2": dr[cont] = EvalSerialLabel.PrintingLot; break; case "SERIAL3": dr[cont] = EvalSerialLabel.Manufacturer; break; } cont++; } //Asigno al campo 0 el LabelID dr[0] = EvalSerialLabel.LabelID; //Asigno al campo 1 ProductID, campo 2 ProducName dr[1] = EvalSerialLabel.Product.ProductID; dr[2] = EvalSerialLabel.Product.Name; //Deserializo el Xml para obtener los datos guardados anteriormente en el DataInformation ShowDataList = Util.DeserializeMetaDataWF(DataInformationLabel.XmlData); //Asigno a cada campo su valor definido por defecto o asigno el dato guardado anteriormente foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposDetails) { try { ShowData = ShowDataList.Where(f => f.DataKey == DataDefinitionByBin.DataDefinition.Code).ToList().First(); } catch { ShowData = null; } if (ShowData != null) { dr[ShowData.DataKey] = ShowData.DataValue; } else { dr[DataDefinitionByBin.DataDefinition.Code] = DataDefinitionByBin.DataDefinition.DefaultValue; } } //Adiciono el registro a la lista View.Model.ListRecords.Rows.Add(dr); //Limpio los seriales para digitar nuevos datos View.GetSerial1.Text = ""; View.GetSerial2.Text = ""; View.GetSerial3.Text = ""; View.GetSerial1.Focus(); }
private void OnExecute(object sender, DataEventArgs <DocumentConcept> e) { //if (string.IsNullOrEmpty(View.TxtComment.Text.Trim())) //{ // Util.ShowError("Please enter the adjustment cause or observation."); // return; //} if (e.Value == null) { Util.ShowError("Please select the adjustment cause."); return; } int count = 1; int step = 0; Document curDocument = new Document { DocType = new DocumentType { DocTypeID = SDocType.InventoryAdjustment }, DocConcept = e.Value, CreatedBy = App.curUser.UserName, Location = App.curLocation, Company = App.curCompany, IsFromErp = false, CrossDocking = false, Comment = View.TxtComment.Text.Trim(), Date1 = DateTime.Now }; if (Util.GetConfigOption("REASON2ERP").Equals("T")) { curDocument.Notes = curDocument.DocConcept.Name.ToUpper(); } ProcessWindow pw = new ProcessWindow("Processing the Adjustment ... "); try { //Header del Documento de Ajuste curDocument = service.CreateNewDocument(curDocument, true); step = 1; //Creo el header del documento DocumentLine curLine; foreach (DocumentLine docLine in View.Model.LinesToProcess) { docLine.Document = curDocument; docLine.Location = App.curLocation; docLine.LineNumber = count++; //LAbel Origen de la transaccion, guardada en lao notes de la linea WpfFront.WMSBusinessService.Label source = service.GetLabel(new WpfFront.WMSBusinessService.Label { LabelID = long.Parse(docLine.LinkDocNumber) }).First(); curLine = service.SaveAdjustmentTransaction(docLine, source); if (curLine.Note != "Adjust OK.") { throw new Exception(curLine.Note); } } step = 2; //Creo las lineas service.CreateInventoryAdjustment(curDocument); View.BtnExecute.IsEnabled = false; ClearForms(); LoadHistAdjustments(); pw.Close(); Util.ShowMessage("Adjustment document " + curDocument.DocNumber + " was created."); } catch (Exception ex) { pw.Close(); if (step > 0) { curDocument.DocStatus = new Status { StatusID = DocStatus.Cancelled }; curDocument.Comment = "Cancelled: " + ex.Message; service.UpdateDocument(curDocument); } Util.ShowError("Adjustment document could not be created.\n" + ex.Message); } }
private void OnAddLine(object sender, EventArgs e) { //Variables Auxiliares DataRow dr = View.Model.ListRecords.NewRow(); WpfFront.WMSBusinessService.Label EvalSerialLabel = new WpfFront.WMSBusinessService.Label { Bin = new Bin { Location = View.Model.RecordCliente } }; DataInformation DataInformationLabel; List <ShowData> ShowDataList; ShowData ShowData; bool EvalSerial1 = true, EvalSerial2 = true, EvalSerial3 = true; //Validacion de los seriales(tamanos, datos y existencia en el sistema) foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposSeriales) { switch (DataDefinitionByBin.DataDefinition.Code) { case "SERIAL1": if (View.GetSerial1.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial1.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Asigno el serial para evaluar si existe en el sistema EvalSerialLabel.LabelCode = View.GetSerial1.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) { foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial1 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial1.Text ? true : false; } } break; case "SERIAL2": if (View.GetSerial2.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial2.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Asigno el serial para evaluar si existe en el sistema EvalSerialLabel.PrintingLot = View.GetSerial2.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) { foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial2 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial2.Text ? true : false; } } break; case "SERIAL3": if (View.GetSerial3.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial3.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Asigno el serial para evaluar si existe en el sistema EvalSerialLabel.Manufacturer = View.GetSerial3.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) { foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial3 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial3.Text ? true : false; } } break; } } //Analizo si el serial ya esta en la lista y el listado a lo sumo tiene un elemento if (EvalSerial1 && EvalSerial2 && EvalSerial3 && View.Model.ListRecords.Rows.Count > 0) { Util.ShowError("El serial ya existe en el listado de ingresos"); return; } //Analizo si el serial esta en el sistema if (service.GetLabel(EvalSerialLabel).Count() == 0) { Util.ShowError("El serial no existe en el sistema"); return; } //Analizo si el serial esta en el sistema y esta en el Bin Despachos EvalSerialLabel.Bin = BinDespachos; try { //Obtengo el Label EvalSerialLabel = service.GetLabel(EvalSerialLabel).First(); //Obtengo el DataInformation asociado al Label DataInformationLabel = service.GetDataInformation(new DataInformation { Entity = new ClassEntity { ClassEntityID = 20 }, EntityRowID = Int32.Parse(EvalSerialLabel.LabelID.ToString()) }).First(); } catch { Util.ShowError("El serial no se encuentra en el estado " + BinDespachos.BinCode); return; } //Guardo el Label y DataInformation en el listado para control de actualizacion View.Model.ListLabelScann.Add(EvalSerialLabel); View.Model.ListDataInformation.Add(DataInformationLabel); //Evaluo cuales seriales estan visibles para adicionarlos al registro int cont = 3; foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposSeriales) { switch (DataDefinitionByBin.DataDefinition.Code) { case "SERIAL1": dr[cont] = EvalSerialLabel.LabelCode; break; case "SERIAL2": dr[cont] = EvalSerialLabel.PrintingLot; break; case "SERIAL3": dr[cont] = EvalSerialLabel.Manufacturer; break; } cont++; } //Asigno al campo 0 el LabelID dr[0] = EvalSerialLabel.LabelID; //Asigno al campo 1 ProductID, campo 2 ProducName dr[1] = EvalSerialLabel.Product.ProductID; dr[2] = EvalSerialLabel.Product.Name; //Deserializo el Xml para obtener los datos guardados anteriormente en el DataInformation ShowDataList = Util.DeserializeMetaDataWF(DataInformationLabel.XmlData); //Asigno a cada campo su valor definido por defecto o asigno el dato guardado anteriormente foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposDetails) { try { ShowData = ShowDataList.Where(f => f.DataKey == DataDefinitionByBin.DataDefinition.Code).ToList().First(); } catch { ShowData = null; } if (ShowData != null) { dr[ShowData.DataKey] = ShowData.DataValue; } else { dr[DataDefinitionByBin.DataDefinition.Code] = DataDefinitionByBin.DataDefinition.DefaultValue; } } //Adiciono el registro a la lista View.Model.ListRecords.Rows.Add(dr); //Limpio los seriales para digitar nuevos datos View.GetSerial1.Text = ""; View.GetSerial2.Text = ""; View.GetSerial3.Text = ""; View.GetSerial1.Focus(); }
private void OnAddLine(object sender, EventArgs e) { //Variables Auxiliares DataRow dr = View.Model.ListRecords.NewRow(); //WpfFront.WMSBusinessService.Label EvalSerialSave = new WpfFront.WMSBusinessService.Label { Bin = new Bin { Location = View.Model.RecordCliente } }; bool EvalSerial1 = false, EvalSerial2 = false, EvalSerial3 = false; DataSet ValidarSeriales; //Validacion si fue seleccionado el producto if (View.Model.ProductoSerial == null) { Util.ShowError("Por favor seleccionar un producto"); return; } //Validacion si el producto no es serializable y no se coloco un valor en la cantidad if (View.Model.ProductoSerial.ErpTrackOpt == 0 && String.IsNullOrEmpty(View.GetCantidadProducto.Text)) { Util.ShowError("Por favor digitar la cantidad a ingresar del producto."); return; } //Genero la variable del Label para adicionar el dato WpfFront.WMSBusinessService.Label SerialLabel = new WpfFront.WMSBusinessService.Label { LabelType = new DocumentType { DocTypeID = LabelType.UniqueTrackLabel }, Status = new Status { StatusID = EntityStatus.Active }, StartQty = Int32.Parse(View.GetCantidadProducto.Text), CurrQty = Int32.Parse(View.GetCantidadProducto.Text), Node = new Node { NodeID = NodeType.PreLabeled }, Bin = BinRecibo, Printed = (View.Model.ProductoSerial.ErpTrackOpt == 0) ? false : true, Notes = (View.Model.IsCheckedCommentsSerial) ? View.Model.HeaderDocument.Comment : "Doc# " + View.Model.HeaderDocument.DocNumber, ReceivingDate = DateTime.Now, CreatedBy = App.curUser.UserName, CreationDate = DateTime.Now, ReceivingDocument = View.Model.HeaderDocument, Product = View.Model.ProductoSerial, Unit = View.Model.ProductoSerial.BaseUnit, CreTerminal = View.Model.RecordCliente.LocationID.ToString() }; //Si el producto es serializable hago las evaluaciones, en caso contrario omito estos pasos if (View.Model.ProductoSerial.ErpTrackOpt == 1) { //Validacion de los seriales(tamanos, datos y existencia en el sistema) foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposSeriales) { switch (DataDefinitionByBin.DataDefinition.Code) { case "SERIAL1": if (View.GetSerial1.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial1.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Consulto el serial1 en el sistema ValidarSeriales = service.DirectSQLQueryDS("EXEC dbo.spUtil 1, '" + View.Model.RecordCliente.LocationID + "', '" + View.GetSerial1.Text + "'", "", "Trace.Label", Local); //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Tables[0].Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial1.Text + " ya existe en el sistema"); return; } //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Tables[1].Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial1.Text + " ya fue procesado y despachado anteriormente. Ha sido procesado en " + ValidarSeriales.Tables[1].Rows.Count + " oportunidad(es)."); } //Consulto el serial2 en la bodega de despachos para saber si es un reingreso /*ValidarSeriales = service.DirectSQLQuery("EXEC dbo.spUtil 1, '453', '" + View.GetSerial2.Text + "'", "", "Trace.Label", Local); //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial2.Text + " ya fue procesado y despachado anteriormente. Ha sido procesado en " + ValidarSeriales.Rows.Count + " oportunidad(es)."); }*/ //Asigno el serial para evaluar si ya existe en el sistema //EvalSerialSave.PrintingLot = View.GetSerial2.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) { //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial1 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial2.Text ? true : false; if (EvalSerial1) break; } } //Evaluo si existe la columna del serial1 para validar la existencia del serial digitado en serial2 if (View.Model.ListRecords.Columns.Contains("SERIAL2") && !EvalSerial1) { //Evaluo que el serial1 sea diferente al serial2 if (View.GetSerial1.Text == View.GetSerial2.Text) { Util.ShowError("No pueden haber seriales repetidos."); return; } //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial1 = DataRow["SERIAL2"].ToString() == View.GetSerial1.Text ? true : false; if (EvalSerial1) break; } } //Evaluo si existe la columna del serial3 para validar la existencia del serial digitado en serial2 if (View.Model.ListRecords.Columns.Contains("SERIAL3") && !EvalSerial1) { //Evaluo que el serial1 sea diferente al serial3 if (View.GetSerial1.Text == View.GetSerial3.Text) { Util.ShowError("No pueden haber seriales repetidos."); return; } //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial2 = DataRow["SERIAL3"].ToString() == View.GetSerial2.Text ? true : false; if (EvalSerial2) break; } } break; /*case "SERIAL2": if (View.GetSerial2.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial2.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Consulto el serial2 en el sistema ValidarSeriales = service.DirectSQLQueryDS("EXEC dbo.spUtil 1, '" + View.Model.RecordCliente.LocationID + "', '" + View.GetSerial2.Text + "'", "", "Trace.Label", Local); //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Tables[0].Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial2.Text + " ya existe en el sistema"); return; } //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Tables[1].Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial2.Text + " ya fue procesado y despachado anteriormente. Ha sido procesado en " + ValidarSeriales.Tables[1].Rows.Count + " oportunidad(es)."); } //Consulto el serial2 en la bodega de despachos para saber si es un reingreso //ValidarSeriales = service.DirectSQLQuery("EXEC dbo.spUtil 1, '453', '" + View.GetSerial2.Text + "'", "", "Trace.Label", Local); //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error //if (ValidarSeriales.Rows.Count > 0) //{ // Util.ShowError("El serial " + View.GetSerial2.Text + " ya fue procesado y despachado anteriormente. Ha sido procesado en " + ValidarSeriales.Rows.Count + " oportunidad(es)."); //} //Asigno el serial para evaluar si ya existe en el sistema //EvalSerialSave.PrintingLot = View.GetSerial2.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) { //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial2 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial2.Text ? true : false; if (EvalSerial2) break; } } //Evaluo si existe la columna del serial1 para validar la existencia del serial digitado en serial2 if (View.Model.ListRecords.Columns.Contains("SERIAL1") && !EvalSerial2) { //Evaluo que el serial2 sea diferente al serial1 if (View.GetSerial2.Text == View.GetSerial1.Text) { Util.ShowError("No pueden haber seriales repetidos."); return; } //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial2 = DataRow["SERIAL1"].ToString() == View.GetSerial2.Text ? true : false; if (EvalSerial2) break; } } //Evaluo si existe la columna del serial3 para validar la existencia del serial digitado en serial2 if (View.Model.ListRecords.Columns.Contains("SERIAL3") && !EvalSerial2) { //Evaluo que el serial2 sea diferente al serial3 if (View.GetSerial2.Text == View.GetSerial3.Text) { Util.ShowError("No pueden haber seriales repetidos."); return; } //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial2 = DataRow["SERIAL3"].ToString() == View.GetSerial2.Text ? true : false; if (EvalSerial2) break; } } break;*/ /*case "SERIAL3": if (View.GetSerial3.Text == "") { Util.ShowError("Por favor digite el serial en " + DataDefinitionByBin.DataDefinition.DisplayName); return; } if (View.GetSerial3.Text.Length != DataDefinitionByBin.DataDefinition.Size && DataDefinitionByBin.DataDefinition.Size != 0) { Util.ShowError("El serial en el campo " + DataDefinitionByBin.DataDefinition.DisplayName + " debe tener " + DataDefinitionByBin.DataDefinition.Size + " digitos."); return; } //Consulto el serial3 en el sistema ValidarSeriales = service.DirectSQLQueryDS("EXEC dbo.spUtil 1, '" + View.Model.RecordCliente.LocationID + "', '" + View.GetSerial3.Text + "'", "", "Trace.Label", Local); //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Tables[0].Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial3.Text + " ya existe en el sistema"); return; } //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error if (ValidarSeriales.Tables[1].Rows.Count > 0) { Util.ShowError("El serial " + View.GetSerial3.Text + " ya fue procesado y despachado anteriormente. Ha sido procesado en " + ValidarSeriales.Tables[1].Rows.Count + " oportunidad(es)."); } //Consulto el serial3 en la bodega de despachos para saber si es un reingreso //ValidarSeriales = service.DirectSQLQuery("EXEC dbo.spUtil 1, '453', '" + View.GetSerial3.Text + "'", "", "Trace.Label", Local); //Evaluo si la consulta me trajo serial alguno para mostrar el mensaje de error //if (ValidarSeriales.Rows.Count > 0) //{ // Util.ShowError("El serial " + View.GetSerial3.Text + " ya fue procesado y despachado anteriormente. Ha sido procesado en " + ValidarSeriales.Rows.Count + " oportunidad(es)."); //} //Asigno el serial para evaluar si ya existe en el sistema //EvalSerialSave.Manufacturer = View.GetSerial3.Text; //Evaluo si existe la columna para validar el serial existente en el listado actual if (View.Model.ListRecords.Columns.Contains(DataDefinitionByBin.DataDefinition.Code)) { //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial3 = DataRow[DataDefinitionByBin.DataDefinition.Code].ToString() == View.GetSerial3.Text ? true : false; if (EvalSerial3) break; } } //Evaluo si existe la columna del serial1 para validar la existencia del serial digitado en serial3 if (View.Model.ListRecords.Columns.Contains("SERIAL1") && !EvalSerial3) { //Evaluo que el serial3 sea diferente al serial1 if (View.GetSerial3.Text == View.GetSerial1.Text) { Util.ShowError("No pueden haber seriales repetidos."); return; } //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial3 = DataRow["SERIAL1"].ToString() == View.GetSerial3.Text ? true : false; if (EvalSerial3) break; } } //Evaluo si existe la columna del serial2 para validar la existencia del serial digitado en serial3 if (View.Model.ListRecords.Columns.Contains("SERIAL2") && !EvalSerial3) { //Evaluo que el serial3 sea diferente al serial2 if (View.GetSerial3.Text == View.GetSerial2.Text) { Util.ShowError("No pueden haber seriales repetidos."); return; } //Recorro el listado de seriales adicionados para validar que no este ingresando un serial repetido foreach (DataRow DataRow in View.Model.ListRecords.Rows) { EvalSerial3 = DataRow["SERIAL2"].ToString() == View.GetSerial3.Text ? true : false; if (EvalSerial3) break; } } break;*/ } } //Analizo si el serial ya esta en el sistema //EvalSerialSave.Bin = new Bin { Location = View.Model.RecordCliente }; /*if (service.GetLabel(EvalSerialSave).Count() > 0) { Util.ShowError("El serial ya existe en el sistema"); return; }*/ //Analizo si el serial ya esta en la lista if (EvalSerial1 && EvalSerial2 && EvalSerial3) { Util.ShowError("El serial ya existe en el listado de ingresos"); return; } //Evaluo cuales seriales estan visibles para adicionarlos al registro int cont = 4; foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposSeriales) { switch (DataDefinitionByBin.DataDefinition.Code) { case "SERIAL1": dr[cont] = View.GetSerial1.Text; SerialLabel.LabelCode = View.GetSerial1.Text; break; case "SERIAL2": dr[cont] = View.GetSerial2.Text; SerialLabel.PrintingLot = View.GetSerial2.Text; break; case "SERIAL3": dr[cont] = View.GetSerial3.Text; SerialLabel.Manufacturer = View.GetSerial3.Text; break; } cont++; } //offset = cont; } //Caso en que el producto no es serializable else { SerialLabel.LabelCode = Guid.NewGuid().ToString(); } if (View.Model.ProductoSerial.ErpTrackOpt == 0) { //Realizo un control si hay algun error guardando los datos try { //Define Document, Product, Unit and Qty to send to receiving transaction DocumentLine receivingLine = new DocumentLine { Document = View.Model.HeaderDocument, Product = SerialLabel.Product, Unit = SerialLabel.Product.BaseUnit, Quantity = SerialLabel.StartQty, QtyPending = SerialLabel.StartQty, QtyAllocated = 0, CreatedBy = App.curUser.UserName, Note = SerialLabel.Notes }; service.ReceiveProduct(receivingLine, SerialLabel.Product.BaseUnit, SerialLabel.Bin, new Node { NodeID = NodeType.Received }); } catch (Exception Ex) { Util.ShowError("1. Hubo un error intentando recibir el producto, por favor volver a intentarlo. Error: " + Ex.Message); return; } } else { //Realizo un control si hay algun error guardando los datos try { //Guardo el serial en Label y asigno el Id SerialLabel = service.SaveLabel(SerialLabel); service.ReceiveLabel(View.Model.HeaderDocument, SerialLabel, SerialLabel.Bin, new Node { NodeID = NodeType.Received }); //Valido si el Label fue guardado correctamente para continuar, en caso contrario muestro mensaje de error y aborto el save if (SerialLabel.LabelID == 0) { Util.ShowError("2. Hubo un error intentando recibir el producto no serializado, por favor volver a intentarlo."); return; } } catch { //Util.ShowMessage("El sistema esta ocupado. Oprima enter para continuar con la carga."); ////Guardo el serial en Label y asigno el Id //SerialLabel = service.SaveLabel(SerialLabel); //service.ReceiveLabel(View.Model.HeaderDocument, SerialLabel, SerialLabel.Bin, new Node { NodeID = NodeType.Received }); //Ciclo que espera por un recurso en la BD para guardar un registro. Boolean Control = true; //Util.ShowMessage("El sistema esta ocupado. Oprima enter para continuar con la carga."); while (Control) { try { SerialLabel = service.SaveLabel(SerialLabel); //service.SaveLabel(SerialLabel); service.ReceiveLabel(View.Model.HeaderDocument, SerialLabel, SerialLabel.Bin, new Node { NodeID = NodeType.Received }); Control = false; } catch { Control = true; } } } } #region Agregar los campos a la grilla //Asigno al campo 0 el LabelID dr[0] = SerialLabel.LabelID; //Asigno al campo 1 ProductID, campo 2 ProducName, campo 3 Cantidad dr[1] = View.Model.ProductoSerial.ProductID; dr[2] = View.Model.ProductoSerial.Name; dr[3] = View.GetCantidadProducto.Text; //Asigno a cada campo su valor definido por defecto foreach (DataDefinitionByBin DataDefinitionByBin in View.Model.CamposDetails) { dr[DataDefinitionByBin.DataDefinition.Code] = DataDefinitionByBin.DataDefinition.DefaultValue; } View.Model.ListRecords.Rows.Add(dr); //Limpio los campos para digitar nuevos valores if (View.Model.ProductoSerial.ErpTrackOpt == 1) { //Limpio los seriales para digitar nuevos datos View.GetSerial1.Text = (View.Model.RecordCliente.AddressLine3 == "1") ? View.Model.RecordCliente.City : ""; View.GetSerial2.Text = ""; View.GetSerial3.Text = ""; View.GetSerial1.Focus(); } else { //Limpio la cantidad de producto a ingresar View.GetCantidadProducto.Text = ""; View.GetCantidadProducto.Focus(); } #endregion }