public Boolean guardarTrasladoIngreso(int idDocumento, List<int> listaProductos, int idbodegaDest, List<int> listacantidad, List<int> listalote, List<String> listaTallas, int falta, List<EquipoTraslado> listaEquiposTraslado) { int transaccion = 0; Boolean retorno = true; Decimal idLote = 0; String estado; Decimal id_inventario = 0; Conexion conexion = new Conexion(Empresa); conexion.IniciarTransaccion(); lote _lote = new lote(Empresa, Usuario); try { for (int i = 0; i < listaProductos.Count; i++) { _lote.MensajeError = null; DataTable tablalote = _lote.ObtenerAlmLotePorId(listalote[i], conexion); if (_lote.MensajeError != null) { retorno = false; MensajeError = _lote.MensajeError; conexion.DeshacerTransaccion(); break; } else { DataRow filalote = tablalote.Rows[0]; Decimal costo = Convert.ToDecimal(filalote["COSTO"]); DateTime fecha = System.DateTime.Today; idLote = _lote.AdicionarAlmLote(Convert.ToInt32(filalote["ID_DOCUMENTO"]), listaProductos[i], idbodegaDest, fecha, listacantidad[i], 0, costo, listaTallas[i], "S", conexion, filalote["REEMBOLSO"].ToString()); if (idLote <= 0) { retorno = false; conexion.DeshacerTransaccion(); MensajeError += "No fue posible crear el lote por: " + _lote.MensajeError; break; } else { id_inventario = AdicionarAlmInventario(idDocumento, listaProductos[i], idbodegaDest, listacantidad[i], costo, fecha, "ENTRADA", conexion, Convert.ToInt32(idLote), listaTallas[i], 0, 0, null, filalote["REEMBOLSO"].ToString()); if (id_inventario <= 0) { retorno = false; conexion.DeshacerTransaccion(); break; } else { transaccion++; } } } } if (retorno == true) { foreach (EquipoTraslado equipo in listaEquiposTraslado) { _lote.MensajeError = null; DataTable tablalote = _lote.ObtenerAlmLotePorId(Convert.ToInt32(equipo.ID_LOTE), conexion); if (_lote.MensajeError != null) { retorno = false; MensajeError = _lote.MensajeError; conexion.DeshacerTransaccion(); break; } else { DataRow filalote = tablalote.Rows[0]; Decimal costo = Convert.ToDecimal(filalote["COSTO"]); DateTime fecha = System.DateTime.Today; idLote = _lote.AdicionarAlmLote(Convert.ToInt32(filalote["ID_DOCUMENTO"]), Convert.ToInt32(equipo.ID_PRODUCTO), idbodegaDest, fecha, 1, 0, costo, filalote["TALLA"].ToString(), "S", conexion, filalote["REEMBOLSO"].ToString()); if (idLote <= 0) { retorno = false; conexion.DeshacerTransaccion(); MensajeError += "No fue posible crear el lote por: " + _lote.MensajeError; break; } else { id_inventario = AdicionarAlmInventario(idDocumento, Convert.ToInt32(equipo.ID_PRODUCTO), idbodegaDest, 1, costo, fecha, "ENTRADA", conexion, Convert.ToInt32(idLote), filalote["TALLA"].ToString(), Convert.ToInt32(equipo.ID_EQUIPO), 0, null, filalote["REEMBOLSO"].ToString()); if (id_inventario <= 0) { retorno = false; conexion.DeshacerTransaccion(); break; } else { if (_lote.ActualizarLoteActualDeUnEquipo(equipo.ID_EQUIPO, idLote, Convert.ToDecimal(idDocumento), conexion) == false) { retorno = false; conexion.DeshacerTransaccion(); MensajeError = _lote.MensajeError; break; } else { transaccion++; } } } } } } if (retorno == true) { if (falta > 0) { estado = "RECIBIDO"; } else { estado = "COMPLETO"; } if (transaccion == (listaProductos.Count + listaEquiposTraslado.Count)) { documento _doc = new documento(Empresa, Usuario); DataTable tablaDoc = _doc.ObtenerAlmRegDocumentoPorId(idDocumento); DataRow filaDoc = tablaDoc.Rows[0]; if (_doc.ActualizarAlmDocumento(idDocumento, 0, 0, "TRASLADO", "", "", Convert.ToDateTime(filaDoc["FECHA_DOCUMENTO"]), new DateTime(), idbodegaDest, 0, 0, estado, filaDoc["OBSERVACION_JUSTIFICACION"].ToString(), 0, conexion) == false) { retorno = false; MensajeError = _doc.MensajeError; conexion.DeshacerTransaccion(); } } else { MensajeError = "la transaccion arrojó un resultado inconcistente en cuanto a los productos que se tenian que procesar."; retorno = false; conexion.DeshacerTransaccion(); } } if (retorno == true) { conexion.AceptarTransaccion(); } } catch (Exception ex) { retorno = false; conexion.DeshacerTransaccion(); MensajeError = ex.Message; } finally { conexion.Desconectar(); } return retorno; }
public Decimal guardarTraslado(Decimal id_bodega_origen, List<int> lista_productos, List<int> lista_Cantidades, List<int> lista_lotes, Decimal id_bodega_destino, String Observaciones, List<String> talla, List<EquipoTraslado> listaEquiposTraslado) { int cantidadRegistrosActualizados = 0; int ConteLo; DateTime fecha = System.DateTime.Today; Decimal idInventario = 0; Decimal idDOC = 0; Boolean correcto = true; Conexion conexion = new Conexion(Empresa); conexion.IniciarTransaccion(); try { lote _lote = new lote(Empresa, Usuario); documento _doc = new documento(Empresa, Usuario); idDOC = _doc.AdicionarAlmDocumentos(0, 0, "TRASLADO", "", "", fecha, new DateTime(), Convert.ToInt32(id_bodega_destino), 0, 0, "ELABORADO", Observaciones, conexion, 0, null); if (idDOC == 0) { conexion.DeshacerTransaccion(); correcto = false; MensajeError = _doc.MensajeError; } else { for (int i = 0; i < lista_productos.Count; i++) { _lote.MensajeError = null; DataTable tablalo = _lote.ObtenerAlmLotePorId(lista_lotes[i], conexion); if (_lote.MensajeError != null) { conexion.DeshacerTransaccion(); correcto = false; break; } else { DataRow filalo = tablalo.Rows[0]; ConteLo = Convert.ToInt32(filalo["ENTRADAS"]) - Convert.ToInt32(filalo["SALIDAS"]); if (lista_Cantidades[i] <= ConteLo) { idInventario = AdicionarAlmInventario(Convert.ToInt32(idDOC), lista_productos[i], Convert.ToInt32(id_bodega_origen), lista_Cantidades[i], Convert.ToDecimal(filalo["COSTO"]), fecha, "SALIDA", conexion, lista_lotes[i], talla[i], 0, 0, null, filalo["REEMBOLSO"].ToString()); if (idInventario == 0) { conexion.DeshacerTransaccion(); MensajeError += "ADVERTENCIA: El registro de inventario no pudo ser creado. Valide Por favor."; correcto = false; break; } else { String activo = "S"; if (ConteLo - lista_Cantidades[i] <= 0) { activo = "N"; } if (_lote.ActualizarAlmLote(lista_lotes[i], Convert.ToInt32(filalo["ID_DOCUMENTO"]), lista_productos[i], Convert.ToInt32(id_bodega_origen), Convert.ToDateTime(filalo["FECHA_REGISTRO"]), Convert.ToInt32(filalo["ENTRADAS"]), Convert.ToInt32(filalo["SALIDAS"]) + lista_Cantidades[i], Convert.ToDecimal(filalo["COSTO"]), filalo["TALLA"].ToString(), activo, conexion) == false) { conexion.DeshacerTransaccion(); correcto = false; MensajeError += "ADVERTENCIA: El registro del lote no pudo ser actualizado. Verifique Por Favor"; break; } else { cantidadRegistrosActualizados++; } } } else { conexion.DeshacerTransaccion(); correcto = false; MensajeError += "ADVERTENCIA: La cantidad de producto (" + lista_productos[i].ToString() + ") solicitada no puede ser sacada del lote (" + lista_lotes[i].ToString() + ") seleccionado, cambie la cantidad o haga varios registros con cantidades posibles."; break; } } } foreach (EquipoTraslado equipo in listaEquiposTraslado) { _lote.MensajeError = null; DataTable tablalo = _lote.ObtenerAlmLotePorId(Convert.ToInt32(equipo.ID_LOTE), conexion); if (_lote.MensajeError != null) { conexion.DeshacerTransaccion(); correcto = false; break; } else { DataRow filalo = tablalo.Rows[0]; ConteLo = Convert.ToInt32(filalo["ENTRADAS"]) - Convert.ToInt32(filalo["SALIDAS"]); if (1 <= ConteLo) { idInventario = AdicionarAlmInventario(Convert.ToInt32(idDOC), Convert.ToInt32(equipo.ID_PRODUCTO), Convert.ToInt32(id_bodega_origen), 1, Convert.ToDecimal(filalo["COSTO"]), fecha, "SALIDA", conexion, Convert.ToInt32(equipo.ID_LOTE), filalo["TALLA"].ToString(), Convert.ToInt32(equipo.ID_EQUIPO), 0, null, filalo["REEMBOLSO"].ToString()); if (idInventario == 0) { conexion.DeshacerTransaccion(); MensajeError += "ADVERTENCIA: El registro de inventario no pudo ser creado. Valide Por favor."; correcto = false; break; } else { String activo = "S"; if (ConteLo - 1 <= 0) { activo = "N"; } if (_lote.ActualizarAlmLote(Convert.ToInt32(equipo.ID_LOTE), Convert.ToInt32(filalo["ID_DOCUMENTO"]), Convert.ToInt32(equipo.ID_PRODUCTO), Convert.ToInt32(filalo["ID_BODEGA"]), Convert.ToDateTime(filalo["FECHA_REGISTRO"]), Convert.ToInt32(filalo["ENTRADAS"]), Convert.ToInt32(filalo["SALIDAS"]) + 1, Convert.ToDecimal(filalo["COSTO"]), filalo["TALLA"].ToString(), activo, conexion) == false) { conexion.DeshacerTransaccion(); correcto = false; MensajeError += "ADVERTENCIA: El registro del lote no pudo ser actualizado. Verifique Por Favor"; break; } else { _lote.MensajeError = null; if (_lote.ActualizarLoteActualDeUnEquipo(equipo.ID_EQUIPO, 0, 0, conexion) == false) { conexion.DeshacerTransaccion(); correcto = false; MensajeError = _lote.MensajeError; break; } else { cantidadRegistrosActualizados++; } } } } else { conexion.DeshacerTransaccion(); correcto = false; MensajeError += "ADVERTENCIA: La cantidad de (equipo(s)) solicitada no puede ser sacada del lote (" + equipo.ID_LOTE.ToString() + ") seleccionado, cambie la cantidad o haga varios registros con cantidades posibles."; break; } } } } if (correcto == true) { conexion.AceptarTransaccion(); } } catch (Exception ex) { conexion.DeshacerTransaccion(); correcto = false; MensajeError = ex.Message; } finally { conexion.Desconectar(); } if (correcto == true) { return idDOC; } else { return 0; } }