コード例 #1
0
        public void AltaPago(Pago _pago, string usuario, string clave)
        {
            using (SqlConnection cnn = new SqlConnection(Conexion.Cnn(usuario, clave)))
            {
                try
                {
                    cnn.Open();

                    using (SqlCommand cmd = new SqlCommand("AltaPago", cnn))
                    {
                        cmd.Parameters.AddWithValue("@Fecha", _pago.Fecha);
                        cmd.Parameters.AddWithValue("@Monto", _pago.Monto);
                        cmd.Parameters.AddWithValue("@Cajero", _pago.Cajero.Ci);

                        cmd.CommandType = CommandType.StoredProcedure;

                        SqlParameter retorno = new SqlParameter("@Retorno", SqlDbType.Int);
                        retorno.Direction = ParameterDirection.ReturnValue;
                        cmd.Parameters.Add(retorno);

                        try
                        {
                            cmd.ExecuteNonQuery();

                            //Verifico que el primer SP no haya dado error
                            switch ((int)retorno.Value)
                            {
                            case -1:
                                throw new Exception("Error al ingresar pago, intente nuevamente más tarde.");

                            case -2:
                                throw new Exception("No existe el usuario cajero que está ejecutando esta operación.");

                            default:
                                foreach (LineaPago factura in _pago.LineasPago)
                                {
                                    cmd.Parameters.Clear();
                                    cmd.CommandText = "RegistrarFacturaEnPago";

                                    cmd.Parameters.Add(retorno);
                                    cmd.Parameters.AddWithValue("@CodigoEmpresa", factura.Contrato.Empresa.Codigo);
                                    cmd.Parameters.AddWithValue("@TipoContrato", factura.Contrato.CodContrato);
                                    cmd.Parameters.AddWithValue("@CodCliente", factura.CodigoCliente);
                                    cmd.Parameters.AddWithValue("@FechaVencimiento", factura.FechaVencimiento);
                                    cmd.Parameters.AddWithValue("@Monto", factura.Monto);

                                    cmd.ExecuteNonQuery();
                                    //Verifico que cada ingreso de factura no de error
                                    switch ((int)retorno.Value)
                                    {
                                    case -1:
                                        throw new Exception("Error al registrar factura, intente nuevamente más tarde.");

                                    case -2:
                                        throw new Exception("Error al registrar factura, no existe el tipo de contrato de la factura.\r\nPor favor verifique que el tipo de contrato exista y que no haya más de una factura para el mismo contrato.");

                                    default:
                                        break;
                                    }
                                }
                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                    }
                }
                catch (Exception ex)
                { throw new Exception(ex.Message); }
            }
        }