public DataTable ObtenerAlmRegDocumentoPorTipoDoc(String TIPO_DOC) { DataSet _dataSet = new DataSet(); DataView _dataView = new DataView(); DataTable _dataTable = new DataTable(); String sql = null; Boolean ejecutar = true; sql = "usp_alm_documentos_obtener_por_tipo_doc "; #region validaciones if (String.IsNullOrEmpty(TIPO_DOC) == false) { sql += "'" + TIPO_DOC + "'"; } else { MensajeError += "El campo TIPO_DOC no puede ser nulo\n"; ejecutar = false; } #endregion if (ejecutar) { Conexion conexion = new Conexion(Empresa); try { _dataSet = conexion.ExecuteReader(sql); _dataView = _dataSet.Tables[0].DefaultView; _dataTable = _dataView.Table; } catch (Exception e) { MensajeError = e.Message; } finally { conexion.Desconectar(); } } _dataTable.Columns.Add("NOMBRE_PROVEEDOR"); ordenCompra _ordenCompra = new ordenCompra(Empresa, Usuario); proveedor _proveedor = new proveedor(Empresa, Usuario); Decimal ID_ORDEN = 0; Decimal ID_PROVEEDOR = 0; String[] ordenesCompraPorDocumento; DataTable tablaInfoOrden; DataRow filaInfoOrdenCompra; DataTable tablaInfoProveedor; DataRow filaInfoProveedor; foreach (DataRow fila in _dataTable.Rows) { try { ordenesCompraPorDocumento = fila["ORIGEN"].ToString().Split(','); ID_ORDEN = Convert.ToDecimal(ordenesCompraPorDocumento[0]); tablaInfoOrden = _ordenCompra.ObtenerOrdenCompraPorId(ID_ORDEN); filaInfoOrdenCompra = tablaInfoOrden.Rows[0]; ID_PROVEEDOR = Convert.ToDecimal(filaInfoOrdenCompra["ID_PROVEEDOR"]); tablaInfoProveedor = _proveedor.ObtenerAlmRegProveedorPorRegistro(ID_PROVEEDOR); filaInfoProveedor = tablaInfoProveedor.Rows[0]; fila["NOMBRE_PROVEEDOR"] = filaInfoProveedor["RAZON_SOCIAL"]; } catch (Exception ex) { fila["NOMBRE_PROVEEDOR"] = ex.Message; } } return _dataTable; }
public Decimal AdicionarDatosFactura(Int32 ID_EMPLEADO, Int32 DOCUMENTO_ORIGEN, String TIPO_DOC, String ORIGEN, String NUMERO_DOCUMENTO, DateTime FECHA_DOCUMENTO, DateTime FECHA_VENCE, Int32 ID_BODEGA_DESTINO, Decimal VALOR, String ESTADO, String OBSERVACION_JUSTIFICACION, Int32 ID_PROVEEDOR, List<documento> listaDetalleFactura) { Decimal ID_DOCUMENTO = 0; Decimal ID_LOTE = 0; Decimal ID_INVENTARIO = 0; Decimal ID_DESCARGUE = 0; Boolean verificador = true; List<Decimal> listaDeOrdenesParaDescargadas = new List<Decimal>(); Conexion conexion = new Conexion(Empresa); conexion.IniciarTransaccion(); try { ID_DOCUMENTO = AdicionarAlmDocumentosParaFactura(ID_EMPLEADO, DOCUMENTO_ORIGEN, TIPO_DOC, ORIGEN, NUMERO_DOCUMENTO, FECHA_DOCUMENTO, FECHA_VENCE, ID_BODEGA_DESTINO, VALOR, ESTADO, OBSERVACION_JUSTIFICACION, conexion, ID_PROVEEDOR); if (ID_DOCUMENTO == 0) { conexion.DeshacerTransaccion(); MensajeError = MensajeError; verificador = false; } else { lote _lote = new lote(Empresa, Usuario); Inventario _inventario = new Inventario(Empresa, Usuario); crtDescargueFactura _crtDescargueFactura = new crtDescargueFactura(Empresa, Usuario); foreach (documento detalleFactura in listaDetalleFactura) { ID_LOTE = _lote.AdicionarAlmLote(Convert.ToInt32(ID_DOCUMENTO), Convert.ToInt32(detalleFactura.ID_PRODUCTO), Convert.ToInt32(detalleFactura.ID_BODEGA), FECHA_DOCUMENTO, detalleFactura.CANTIDAD, 0, detalleFactura.VALOR_UNIDAD, detalleFactura.TALLA, "S", conexion, detalleFactura.REEMBOLSO); if (ID_LOTE == 0) { conexion.DeshacerTransaccion(); MensajeError = "ERROR: Ingresando el lote: " + _lote.MensajeError; verificador = false; break; } else { ID_INVENTARIO = _inventario.AdicionarAlmInventario(Convert.ToInt32(ID_DOCUMENTO), Convert.ToInt32(detalleFactura.ID_PRODUCTO), Convert.ToInt32(detalleFactura.ID_BODEGA), detalleFactura.CANTIDAD, detalleFactura.VALOR_UNIDAD, FECHA_DOCUMENTO, "ENTRADA", conexion, Convert.ToInt32(ID_LOTE), detalleFactura.TALLA, 0, 0, null, detalleFactura.REEMBOLSO); if (ID_INVENTARIO == 0) { conexion.DeshacerTransaccion(); MensajeError = "ERROR: Ingresando el inventario: " + _inventario.MensajeError; verificador = false; break; } else { ID_DESCARGUE = _crtDescargueFactura.AdicionarAlmCrtDescargueInventario(ID_DOCUMENTO, detalleFactura.ID_ORDEN, detalleFactura.ID_PRODUCTO, detalleFactura.ID_DETALLE, detalleFactura.ID_BODEGA, ID_LOTE, detalleFactura.REFERENCIA_PRODUCTO, detalleFactura.TALLA, detalleFactura.CANTIDAD, conexion, detalleFactura.REEMBOLSO); if (ID_DESCARGUE == 0) { conexion.DeshacerTransaccion(); MensajeError = "ERROR: Ingresando el descargue de inventario: " + _crtDescargueFactura.MensajeError; verificador = false; break; } } } if (listaDeOrdenesParaDescargadas.Contains(detalleFactura.ID_ORDEN) == false) { listaDeOrdenesParaDescargadas.Add(detalleFactura.ID_ORDEN); } } } if (verificador == true) { ordenCompra _ordenCompra = new ordenCompra(Empresa, Usuario); DataTable tablaDetalleOrden; Int32 CANTIDAD_TOTAL_PRODUCTOS = 0; Int32 CANTIDAD_TOTAL_DESCARGADA = 0; foreach (Decimal orden in listaDeOrdenesParaDescargadas) { CANTIDAD_TOTAL_PRODUCTOS = 0; CANTIDAD_TOTAL_DESCARGADA = 0; tablaDetalleOrden = _ordenCompra.ObtenerDetallesOrdenCompraPorIdOrdenConCantidadDescargada(orden, conexion); foreach (DataRow filaTabla in tablaDetalleOrden.Rows) { try { CANTIDAD_TOTAL_PRODUCTOS += Convert.ToInt32(filaTabla["CANTIDAD"]); CANTIDAD_TOTAL_DESCARGADA += Convert.ToInt32(filaTabla["CANTIDAD_DESCARGADA"]); } catch (Exception ex) { MensajeError = "ERROR: Al intentar calcular estado de descarga de la orden de compra " + orden.ToString() + ". " + ex.Message; conexion.DeshacerTransaccion(); verificador = false; break; } } if (verificador == true) { if ((CANTIDAD_TOTAL_PRODUCTOS - CANTIDAD_TOTAL_DESCARGADA) <= 0) { if (_ordenCompra.ActualizarestadoOrdenCompra(orden, tabla.VAR_ESTADO_ORDEN_COMPRA_FINALIZADA, null) == false) { MensajeError = _ordenCompra.MensajeError; conexion.DeshacerTransaccion(); verificador = false; break; } } else { if (_ordenCompra.ActualizarestadoOrdenCompra(orden, tabla.VAR_ESTADO_ORDEN_COMPRA_ADJUNTADO_FACTURA, null) == false) { MensajeError = _ordenCompra.MensajeError; conexion.DeshacerTransaccion(); verificador = false; break; } } } else { break; } } if (verificador == true) { conexion.AceptarTransaccion(); } } } catch (Exception ex) { conexion.DeshacerTransaccion(); MensajeError = ex.Message; verificador = false; } finally { conexion.Desconectar(); } if (verificador == true) { return ID_DOCUMENTO; } else { return 0; } }