/// <summary>
        /// Determina si a una factura ya se le puede cambiar su estado de cancelado a partir de sus detalles
        /// </summary>
        /// <param name="pFactura"></param>
        private void RevisaFacurasCanceladas(int pFactura)
        {
            DataClasses1DataContext dc = new DataClasses1DataContext();
            List<SIGEEA_spObtenerDetalleFacturaAsociadoResult> lista = dc.SIGEEA_spObtenerDetalleFacturaAsociado(pFactura).ToList();
            bool validador = true;

            foreach (SIGEEA_spObtenerDetalleFacturaAsociadoResult d in lista)
            {
                if (d.Cancelado_DetFacAsociado == false)
                {
                    validador = false;
                    break;
                }
            }

            if (validador == true)
            {
                SIGEEA_FacAsociado factura = dc.SIGEEA_FacAsociados.First(c => c.PK_Id_FacAsociado == pFactura);
                factura.CanNeta_FacAsociado = factura.CanNeta_FacAsociado;
                factura.CanTotal_FacAsociado = factura.CanTotal_FacAsociado;
                factura.Estado_FacAsociado = false;
                factura.FecEntrega_FacAsociado = factura.FecEntrega_FacAsociado;
                factura.FecPago_FacAsociado = DateTime.Now;
                factura.FK_Id_Asociado = factura.FK_Id_Asociado;
                factura.Incompleta_FacAsociado = factura.Incompleta_FacAsociado;
                factura.Observaciones_FacAsociado = factura.Observaciones_FacAsociado;
                dc.SubmitChanges();
            }
        }
        /// <summary>
        /// Obtiene la cantidad de producto neto pendiente de pago la factura con respecto a su cantidad neta
        /// </summary>
        /// <param name="pFactura"></param>
        public int SaldoFactura(int pFactura)
        {
            DataClasses1DataContext dc = new DataClasses1DataContext();
            SIGEEA_FacAsociado factura = dc.SIGEEA_FacAsociados.First(c => c.PK_Id_FacAsociado == pFactura);
            List<SIGEEA_spObtenerDetalleFacturaAsociadoResult> listaDetalles = dc.SIGEEA_spObtenerDetalleFacturaAsociado(factura.PK_Id_FacAsociado).ToList();
            int cantidadNeta = 0;

            foreach (SIGEEA_spObtenerDetalleFacturaAsociadoResult f in listaDetalles)
            {
                if (f.CanNeta_DetFacAsociado == -1 || f.Cancelado_DetFacAsociado == true) continue;
                cantidadNeta += (int)f.CanNeta_DetFacAsociado;
            }
            return cantidadNeta;
        }
        /// <summary>
        /// Revisa y cambia el estado de las facturas, para que cuando se listen las facturas, puedan ser editables.
        /// </summary>
        /// <param name="pkFactura"></param>
        public void RevisaFactura(int pkFactura)
        {
            DataClasses1DataContext dc = new DataClasses1DataContext();
            List<SIGEEA_spObtenerDetalleFacturaAsociadoResult> listaDetalles = dc.SIGEEA_spObtenerDetalleFacturaAsociado(pkFactura).ToList();
            bool validador = true;

            foreach (SIGEEA_spObtenerDetalleFacturaAsociadoResult d in listaDetalles)
            {
                if (d.CanNeta_DetFacAsociado < 0)
                {
                    validador = false; //Existe al menos un detalle incompleto
                    break;
                }
            }

            if (validador == true)
            {
                SIGEEA_FacAsociado factura = dc.SIGEEA_FacAsociados.First(c => c.PK_Id_FacAsociado == pkFactura);
                factura.CanNeta_FacAsociado = factura.CanNeta_FacAsociado;
                factura.CanTotal_FacAsociado = factura.CanTotal_FacAsociado;
                factura.Estado_FacAsociado = factura.Estado_FacAsociado;
                factura.FecEntrega_FacAsociado = factura.FecEntrega_FacAsociado;
                factura.FecPago_FacAsociado = factura.FecPago_FacAsociado;
                factura.FK_Id_Asociado = factura.FK_Id_Asociado;
                factura.Incompleta_FacAsociado = false;
                factura.Observaciones_FacAsociado = factura.Observaciones_FacAsociado;
                dc.SubmitChanges();
            }
        }
        /// <summary>
        /// Actualiza la factura con respecto a su cantidad neta
        /// </summary>
        /// <param name="pFactura"></param>
        public void CantidadNetaFactura(int pFactura)
        {
            DataClasses1DataContext dc = new DataClasses1DataContext();
            SIGEEA_FacAsociado factura = dc.SIGEEA_FacAsociados.First(c => c.PK_Id_FacAsociado == pFactura);
            List<SIGEEA_spObtenerDetalleFacturaAsociadoResult> listaDetalles = dc.SIGEEA_spObtenerDetalleFacturaAsociado(factura.PK_Id_FacAsociado).ToList();
            double cantidadNeta = 0;

            foreach (SIGEEA_spObtenerDetalleFacturaAsociadoResult f in listaDetalles)
            {
                if (f.CanNeta_DetFacAsociado == -1) continue;
                cantidadNeta += (double)f.CanNeta_DetFacAsociado;
            }
            factura.CanNeta_FacAsociado = cantidadNeta;
            factura.CanTotal_FacAsociado = factura.CanTotal_FacAsociado;
            factura.Estado_FacAsociado = factura.Estado_FacAsociado;
            factura.FecEntrega_FacAsociado = factura.FecEntrega_FacAsociado;
            factura.FecPago_FacAsociado = factura.FecPago_FacAsociado;
            factura.FK_Id_Asociado = factura.FK_Id_Asociado;
            factura.Incompleta_FacAsociado = factura.Incompleta_FacAsociado;
            factura.Observaciones_FacAsociado = factura.Observaciones_FacAsociado;
            dc.SubmitChanges();

        }