예제 #1
0
 public void getDoctoRelacionados(DoctoRelacionado[] doctoRelacionados, CFDiDAO cfdiDAO)
 {
     foreach (DoctoRelacionado docRelacionado in doctoRelacionados)
     {
         DoctoRelacionado relacion = null;
         relacion = cfdiDAO.getDoctoRelacionadoInfo(docRelacionado.folio, docRelacionado.serie);
         if (relacion != null)
         {
             docRelacionado.idDocumento    = relacion.idDocumento;
             docRelacionado.impSaldoAnt    = relacion.impSaldoAnt;
             docRelacionado.numParcialidad = relacion.numParcialidad;
             docRelacionado.idFactura      = relacion.idFactura;
             if (docRelacionado.impPagado > docRelacionado.impSaldoAnt)
             {
                 throw new PaymentGreaterThanBalanceException("El importe de pago no puede ser mayor a el saldo de la factura");
             }
             docRelacionado.impSaldoInsoluto = docRelacionado.impSaldoAnt - docRelacionado.impPagado;
             if (docRelacionado.idDocumento == null || docRelacionado.idDocumento.Length <= 0)
             {
                 throw new InvalidInvoiceTypeException("La factura a la que se quiere asignar el pago no es de tipo Pagos Parciales o Diferidos");
             }
             if (docRelacionado.impSaldoAnt == 0.0)
             {
                 throw new InvoiceAtZeroException("El saldo de la factura a la que se quiere asignar este pago está en 0");
             }
         }
     }
 }
예제 #2
0
        public void saveDoctoRelacionado(DoctoRelacionado docRelacionado, long idPago, SqlCommand cmd)
        {
            cmd.CommandText = "PG_SV_DOCTO_REL_INFO";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@PP_L_DEBUG", 0);
            cmd.Parameters.AddWithValue("@PP_K_SISTEMA_EXE", 1);
            cmd.Parameters.AddWithValue("@PP_K_USUARIO", 0);
            /////////////////////////////////////////////////
            cmd.Parameters.AddWithValue("@PP_ID_DOCUMENTO_RELACIONADO", docRelacionado.idDoctoRelacionado).Direction = ParameterDirection.InputOutput;
            cmd.Parameters.AddWithValue("@PP_ID_PAGO", idPago);
            cmd.Parameters.AddWithValue("@PP_ID_FACTURA", docRelacionado.idFactura);
            cmd.Parameters.AddWithValue("@PP_MONEDA_DR", docRelacionado.monedaDR);
            cmd.Parameters.AddWithValue("@PP_METODO_PAGO", docRelacionado.metodoDePagoDR);
            cmd.Parameters.AddWithValue("@PP_NUMERO_PARCIALIDAD", docRelacionado.numParcialidad);
            cmd.Parameters.AddWithValue("@PP_SALDO_ANTERIOR", docRelacionado.impSaldoAnt);
            cmd.Parameters.AddWithValue("@PP_IMPORTE_PAGADO", docRelacionado.impPagado);
            cmd.Parameters.AddWithValue("@PP_SALDO_INSOLUTO", docRelacionado.impSaldoInsoluto);
            cmd.ExecuteNonQuery();
            long id = (long)cmd.Parameters["@PP_ID_DOCUMENTO_RELACIONADO"].Value;

            if (id > 0)
            {
                docRelacionado.idDoctoRelacionado = id;
            }
            else
            {
                throw new Exception("No fue posible guardar el complemento Documento relacionado para esta factura");
            }
        }
예제 #3
0
        public DoctoRelacionado getDoctoRelacionadoInfo(int folio, string serie)
        {
            DoctoRelacionado docRelacion = new DoctoRelacionado();
            SqlConnection    cnn         = DBConnectionFactory.GetOpenConnection();
            SqlCommand       cmd         = new SqlCommand("PG_SK_FACTURA_PAGOS_INFO", cnn);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@PP_L_DEBUG", 0);
            cmd.Parameters.AddWithValue("@PP_K_SISTEMA_EXE", 1);
            cmd.Parameters.AddWithValue("@PP_SERIE", serie);
            cmd.Parameters.AddWithValue("@PP_FOLIO", folio);
            SqlDataReader reader = cmd.ExecuteReader();

            if (!reader.HasRows)
            {
                throw new InvalidInvoiceNumberException("Factura no existe o no es de pagos parciales o diferidos");
            }
            reader.Read();
            docRelacion.idDocumento    = reader.GetValue(0).ToString();
            docRelacion.numParcialidad = int.Parse(reader.GetValue(1).ToString());
            docRelacion.impSaldoAnt    = double.Parse(reader.GetValue(2).ToString());
            docRelacion.idFactura      = int.Parse(reader.GetValue(3).ToString());
            cnn.Dispose();
            reader.Close();
            return(docRelacion);
        }
예제 #4
0
 public void updateInvoiceBalance(DoctoRelacionado docRelacion, SqlCommand cmd)
 {
     cmd.CommandText = "PG_UP_SALDO_FACTURA_INFO";
     cmd.Parameters.Clear();
     cmd.Parameters.AddWithValue("@PP_L_DEBUG", 0);
     cmd.Parameters.AddWithValue("@PP_K_SISTEMA_EXE", 1);
     cmd.Parameters.AddWithValue("@PP_K_USUARIO", 0);
     /////////////////////////////////////////////////
     cmd.Parameters.AddWithValue("@PP_ID_FACTURA", docRelacion.idFactura);
     cmd.Parameters.AddWithValue("@PP_SALDO", docRelacion.impSaldoInsoluto);
     cmd.ExecuteNonQuery();
 }