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"); } } } }
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"); } }
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); }
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(); }