public registrarDocumentosViewModel(DocPagoProveedor d, BuscarDocumentoViewModel m)
 {
     Ord = d.OrdenCompra;
     TxtCodigo = "OC-" + (1000000 + d.IdDocPago).ToString();
     TxtFechaRec = d.FechaRecepcion;
     TxtFechaVen = d.FechaVencimiento;
     TxtDescuento = d.Descuentos;
     TxtIGV = d.Igv;
     TxtObservaciones = d.Observaciones;
     TxtSaldoPagado = d.SaldoPagado;
     TxtTotalBruto = d.TotalBruto;
     TxtTotalFinal = d.MontoTotal;
     indicador = 2;
     model = m;
 }
        public List<PagoParcial> BuscarPagos(DocPagoProveedor doc)
        {
            List<PagoParcial> lstPagos = new List<PagoParcial>();
            DBConexion db = new DBConexion();
            SqlDataReader reader;

            //MessageBox.Show("id = " + doc.IdDocPago + "\nprov = " + doc.Proveedor.RazonSocial);

            String where = "";
            where += " WHERE idDocPago = '" + doc.IdDocPago.ToString() + "' ";

            // MessageBox.Show("SELECT * FROM Proveedor WHERE  estado = 1 " + where);

            db.cmd.CommandText = "SELECT * FROM PagosParciales  " + where;
            db.cmd.CommandType = CommandType.Text;
            db.cmd.Connection = db.conn;

            try
            {
                db.conn.Open();
                reader = db.cmd.ExecuteReader();

                while (reader.Read())
                {

                    PagoParcial p = new PagoParcial();

                    //ProveedorSQL eM = new ProveedorSQL();
                    //List<Proveedor> lstP = eM.Buscar(codProveedor) as List<Proveedor>;

                    p.IdPago = Convert.ToInt32(reader["idPago"].ToString());
                    p.DocPago = doc;
                    p.Monto = Convert.ToDouble(reader["monto"].ToString());
                    p.FechaPago = Convert.ToDateTime(reader["fechaPago"].ToString());

                    lstPagos.Add(p);
                }

                db.conn.Close();

            }
            catch (Exception e)
            {
                MessageBox.Show(e.StackTrace.ToString());
            }

            return lstPagos;
        }
        //Funciones de la clase
        public void SelectedItemChanged(object sender)
        {
            docSeleccionado = ((sender as DataGrid).SelectedItem as DocPagoProveedor);

            if (docSeleccionado != null)
                LstPagosParciales = ActualizarPagos(docSeleccionado);
        }
        public List<PagoParcial> ActualizarPagos(DocPagoProveedor d)
        {
            double totalPago = 0;
            list = eMPP.BuscarPagos(d);

            if (list != null)
            {
                for (int i = 0; i < list.Count; i++)
                    totalPago += list[i].Monto;
            }

            TxtTotalPago = d.MontoTotal-totalPago;
            if (TxtTotalPago <= 0)
                TxtTotalPago = 0;

            return list;
        }
        public object Buscar(params object[] filters)
        {
            List<DocPagoProveedor> lstDocs = new List<DocPagoProveedor>();
            DBConexion db = new DBConexion();
            SqlDataReader reader;

            String where = "";

            if (filters.Length >= 1 && filters.Length <= 3)
            {

                string codDoc = Convert.ToString(filters[0]);
                string codProveedor = Convert.ToString(filters[1]);
                string estado = Convert.ToString(filters[2]);

                if (!String.IsNullOrEmpty(codDoc))
                {
                    //MessageBox.Show("En el buscador..codDoc = " + codDoc);
                    try
                    {
                        int idDoc = getIDfromCOD(codDoc);
                        where += " and idDocPago = '" + idDoc.ToString() + "' ";
                    }

                    catch
                    {
                        MessageBox.Show("Revisar formato de código \nCodigo = DP-100000X");
                    }
                }

                if (!String.IsNullOrEmpty(codProveedor))
                {
                    int idProveedor = getIDfromCOD(codProveedor);

                    //MessageBox.Show("ID prov = " + idProveedor);
                    where += " and idProveedor = '" + idProveedor.ToString() + "' ";
                }

                if (!String.IsNullOrEmpty(estado))
                {
                    int est = 1;

                    if (estado.Equals("COMPLETO"))
                        est = 2;
                    if (estado.Equals("PENDIENTE"))
                        est = 1;
                    if (estado.Equals("CANCELADO"))
                        est = 0;

                    where += " and estado = '" + est + "' ";
                }

            }

            // MessageBox.Show("SELECT * FROM Proveedor WHERE  estado = 1 " + where);

            //MessageBox.Show("SELECT * FROM DocPagoProveedor  WHERE   estado >= 0   " + where);
            db.cmd.CommandText = "SELECT * FROM DocPagoProveedor  WHERE   estado >= 0   " + where;
            db.cmd.CommandType = CommandType.Text;
            db.cmd.Connection = db.conn;

            try
            {
                db.conn.Open();

                reader = db.cmd.ExecuteReader();

                while (reader.Read())
                {

                    DocPagoProveedor d = new DocPagoProveedor();
                    d.Proveedor = new Proveedor();
                    d.OrdenCompra = new OrdenCompra();

                    d.IdDocPago = Convert.ToInt32(reader["idDocPago"].ToString());
                    d.CodDoc = "DP-" + (1000000 + d.IdDocPago).ToString();

                    int idProv = Convert.ToInt32(reader["idProveedor"].ToString());
                    d.Proveedor = getPROVfromID(idProv);

                    int idOrd = Convert.ToInt32(reader["idOrden"].ToString());

                    d.OrdenCompra = getORDfromID(idOrd);

                    d.FechaRecepcion = Convert.ToDateTime(reader["fechaRecepcion"].ToString());
                    d.FechaVencimiento = Convert.ToDateTime(reader["fechaVencimiento"].ToString());
                    d.TotalBruto = Convert.ToDouble(reader["totalBruto"].ToString());
                    d.Descuentos = Convert.ToDouble(reader["descuentos"].ToString());
                    d.Igv = Convert.ToDouble(reader["IGV"].ToString());
                    d.CantProductos = Convert.ToInt32(reader["cantProductos"].ToString());
                    d.MontoTotal = Convert.ToDouble(reader["montoTotal"].ToString());
                    d.Observaciones = reader["observaciones"].ToString();
                    d.FechaPago = Convert.ToDateTime(reader["fechaPago"].ToString());
                    d.SaldoPagado = Convert.ToDouble(reader["saldoPagado"].ToString());
                    d.Estado = Convert.ToInt32(reader["estado"].ToString());

                    lstDocs.Add(d);
                }

                db.conn.Close();

            }
            catch (Exception e)
            {
                MessageBox.Show(e.StackTrace.ToString());
            }

            return lstDocs;
        }
        public void GuardarDocPago()
        {
            int k;
            DocPagoProveedor d = new DocPagoProveedor();
            d.OrdenCompra = new OrdenCompra();
            d.Proveedor = new Proveedor();

            d.FechaRecepcion = TxtFechaRec;
            d.OrdenCompra = Ord;
            d.Proveedor = Ord.Proveedor;
            d.FechaVencimiento = TxtFechaVen;
            d.SaldoPagado = 0;

            if (d.Observaciones != null)
                d.Observaciones = TxtObservaciones;
            else
                d.Observaciones = "NN";

            d.TotalBruto = monto;
            d.CantProductos = cant;
            d.Descuentos = monto - importe;
            d.Igv = (0.18) * (importe);
            d.MontoTotal = importe;

            Boolean noPagado = true;
            List<DocPagoProveedor> listDocs = new DocPagoProveedorSQL().Buscar() as List<DocPagoProveedor>;

            for (int i = 0; i < listDocs.Count; i++)
                if ((listDocs[i].Proveedor.IdProveedor == d.Proveedor.IdProveedor) && (listDocs[i].OrdenCompra.IdOrden == d.OrdenCompra.IdOrden))
                    noPagado = false;

            if ((Ord != null) && (LstProducto != null) && (noPagado))
            {
                if (indicador == 1)
                {
                    k = new DocPagoProveedorSQL().Agregar(d);

                    if (k == 0)
                        MessageBox.Show("Ocurrio un error");
                    else
                        MessageBox.Show("Documento Registrado \n\nCodigo = " + txtCodigo + "\nOC-correspondiente = OC-" +
                                        (1000000 + Ord.IdOrden).ToString());
                }

                if (indicador == 2)
                {
                    MessageBox.Show("Los documentos de pago no son editables");
                }

            }
            else
            {
                MessageBox.Show("Orden de compra no válida a pagar \nRevisar si actualmente está en proceso de pago");
            }
        }