Esempio n. 1
0
        public DataTable ObtenerInformacionFacturaConDetallesPorIdDocumento(Decimal ID_DOCUMENTO)
        {
            DataSet   _dataSet   = new DataSet();
            DataView  _dataView  = new DataView();
            DataTable _dataTable = new DataTable();
            String    sql        = null;
            Boolean   ejecutar   = true;

            sql = "usp_alm_documentos_obtener_info_factura_por_id_documento ";

            #region validaciones
            if (ID_DOCUMENTO != 0)
            {
                sql += ID_DOCUMENTO;
            }
            else
            {
                MensajeError += "El campo ID_DOCUMENTO 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);
        }
Esempio n. 2
0
        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);
            }
        }