/// <summary> /// Abonar a un apartado /// </summary> /// <param name="request"></param> /// <returns></returns> public ResponseBussiness <OperationResponse> Abonar(AbonoApartadoRequest request) { return(tryCatch.SafeExecutor(() => { TransApartadoResponse response = new TransApartadoResponse(); OperationResponse operationResponse = new OperationResponse(); //OperationResponse operationResponseSW = new OperationResponse(); //AdministracionTipoCambio administracionTipoCambio = new AdministracionTipoCambio(); using (TransactionScope scope = new TransactionScope()) { response = new ApartadoAbonoRepository().Abonar(this.token.CodeStore, this.token.CodeBox, this.token.CodeEmployee, request, "APARTADO"); //operationResponseSW = administracionTipoCambio.GetSaleExternalService(request.FormasPagoUtilizadas, request.FolioApartado, this.token.CodeEmployee); if (((response.CodeNumber == "349") || (response.CodeNumber == "350"))) //&& operationResponseSW.CodeNumber == "000") { scope.Complete(); } //else //{ // operationResponse.CodeDescription = operationResponseSW.CodeDescription; // operationResponse.CodeNumber = operationResponseSW.CodeNumber; //} } ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token); imprimeTicketsMM.PrintTicket(response.FolioVenta, false); operationResponse.CodeDescription = response.CodeDescription; operationResponse.CodeNumber = response.CodeNumber; operationResponse.informacionAsociadaRetiroEfectivo = response.informacionAsociadaRetiroEfectivo; return operationResponse; })); }
private TransApartadoResponse FinalizarApartadoInternal(FinalizarApartadoRequest request) { TransApartadoResponse result = new TransApartadoResponse(); AdministracionTipoCambio administracionTipo = new AdministracionTipoCambio(); //Obtenemos el folio apartado y el numero de empleado para usarlos en el metodo externo sale string folioVenta = request.FolioApartado; int codigoEmpleado = token.CodeEmployee; using (TransactionScope scope = new TransactionScope()) { result = repository.FinalizarApartado(token.CodeStore, token.CodeBox, this.token.CodeEmployee, request); //Invocamos el servicio para obtener la respuesta del servicio de sale, si el numero de codigo es el indicado completa la transaccion //en caso de que el codigo no sea el indicado enviara el codigo de error y la descripcion //var resultSale = administracionTipo.GetSaleExternalService(request.FormasPagoUtilizadas, folioVenta, codigoEmpleado); if (result.CodeNumber.Equals("342")) //&& resultSale.CodeNumber.Equals("000")) { var respuesta = this.ActivarTarjetaRegalo(request); if (respuesta.CodeNumber == "1") { scope.Complete(); } } } return(result); }
/// <summary> /// Cancelar apartado /// </summary> /// <param name="folioApartado">folio de apartado</param> /// <param name="codigoCaja">código de la caja</param> /// <param name="codigoTienda">código de la tienda</param> /// <returns>Respuesta de la operación</returns> public TransApartadoResponse CancelarApartado(string folioApartado, int codigoCaja, int codigoTienda, int codigoEmpleado) { TransApartadoResponse transApartadoResponse = new TransApartadoResponse(); var parameters = new Dictionary <string, object>(); parameters.Add("@FolioApartado", folioApartado); parameters.Add("@CodigoCaja", codigoCaja); parameters.Add("@CodigoTienda", codigoTienda); parameters.Add("@CodigoEmpleado", codigoEmpleado); List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>(); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@CodigoResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@FolioNotaCredito", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); var result = data.ExecuteProcedure("[dbo].[sp_vanti_server_CancelarApartado]", parameters, parametersOut); transApartadoResponse.CodeNumber = result["@CodigoResultado"].ToString(); transApartadoResponse.CodeDescription = result["@MensajeResultado"].ToString(); transApartadoResponse.FolioVenta = result["@FolioVenta"].ToString(); transApartadoResponse.FolioNotaCreditoGenerada = result["@FolioNotaCredito"].ToString(); return(transApartadoResponse); }
private TransApartadoResponse AnularTransaccionApartado(AnularTotalizarApartadoRequest anularTotalizarVentaRequest, TokenDto token) { TransApartadoResponse operationResponse = new TransApartadoResponse(); var parameters = new Dictionary <string, object>(); parameters.Add("@FolioApartado", anularTotalizarVentaRequest.FolioApartado); parameters.Add("@CodigoTienda", token.CodeStore); parameters.Add("@CodigoCaja", token.CodeBox); parameters.Add("@CodigoRazon", anularTotalizarVentaRequest.CodigoRazon); List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>(); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@CodigoResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); var result = this.data.ExecuteProcedure("[dbo].[sp_vanti_AnularTransaccionApartado]", parameters, parametersOut); operationResponse.CodeNumber = result["@CodigoResultado"].ToString(); operationResponse.CodeDescription = result["@MensajeResultado"].ToString(); operationResponse.FolioVenta = result["@FolioVenta"].ToString(); return(operationResponse); }
/// <summary> /// Abonar un apartado /// </summary> /// <param name="codeStore">Código de la tienda</param> /// <param name="codeBox">Código de la caja</param> /// <param name="codeEmployee">Código del empleado</param> /// <param name="abonoApartadoRequest">Petición del abono</param> /// <param name="clasificacionVenta">Clasificación de la venta realizada</param> /// <returns></returns> public TransApartadoResponse Abonar(int codeStore, int codeBox, int codeEmployee, AbonoApartadoRequest abonoApartadoRequest, string clasificacionVenta) { TransApartadoResponse operationResponse = new TransApartadoResponse(); new FormasPagoRepository().AsociarFormasPago(codeStore, codeBox, codeEmployee, abonoApartadoRequest.FolioApartado, abonoApartadoRequest.FormasPagoUtilizadas, clasificacionVenta); operationResponse = this.AbonarApartadoInternal(codeStore, codeBox, codeEmployee, abonoApartadoRequest, 0); return(operationResponse); }
/// <summary> /// Anular Venta /// </summary> /// <param name="anularTotalizarApartadoRequest">Parametro con el folio de la venta</param> /// <param name="token">Token del usuario activo</param> /// <returns></returns> public TransApartadoResponse AnularApartado(AnularTotalizarApartadoRequest anularTotalizarApartadoRequest, TokenDto token) { TransApartadoResponse operationResponse = new TransApartadoResponse(); using (TransactionScope scope = new TransactionScope()) { operationResponse = this.AnularTransaccionApartado(anularTotalizarApartadoRequest, token); // TODO: Implementar lógica TransactionLogRepository //new TransactionLogRepository<AnularTotalizarVentaRequest>(token).Add(anularTotalizarVentaRequest, anularTotalizarVentaRequest.FolioVenta); scope.Complete(); } return(operationResponse); }
/// <summary> /// Finalizar Apartado /// </summary> /// <param name="request"></param> /// <returns></returns> public ResponseBussiness <OperationResponse> FinalizarApartado(FinalizarApartadoRequest request) { return(tryCatch.SafeExecutor(() => { TransApartadoResponse response = FinalizarApartadoInternal(request); OperationResponse operationResponse = new OperationResponse(); ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token); imprimeTicketsMM.PrintTicket(response.FolioVenta, false); operationResponse.CodeNumber = response.CodeNumber; operationResponse.CodeDescription = response.CodeDescription; operationResponse.informacionAsociadaRetiroEfectivo = response.informacionAsociadaRetiroEfectivo; return operationResponse; })); }
/// <summary> /// Anular el apartado despues de totalizar /// </summary> /// <param name="request"></param> /// <returns></returns> public ResponseBussiness <OperationResponse> AnularTotalizarApartado(AnularTotalizarApartadoRequest request) { return(tryCatch.SafeExecutor(() => { TransApartadoResponse transApartadoResponse = repository.AnularApartado(request, this.token); OperationResponse operationResponse = new OperationResponse(); operationResponse.CodeNumber = transApartadoResponse.CodeNumber; operationResponse.CodeDescription = transApartadoResponse.CodeDescription; ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token); imprimeTicketsMM.PrintTicket(transApartadoResponse.FolioVenta, false); return operationResponse; })); }
/// <summary> /// Finalizar apartado /// </summary> /// <param name="codeStore"></param> /// <param name="codeBox"></param> /// <param name="codeEmployee"></param> /// <param name="request"></param> /// /// <returns></returns> public TransApartadoResponse FinalizarApartado(int codeStore, int codeBox, int codeEmployee, FinalizarApartadoRequest request) { TransApartadoResponse operationResponse = new TransApartadoResponse(); new FormasPagoRepository().AsociarFormasPago(codeStore, codeBox, codeEmployee, request.FolioApartado, request.FormasPagoUtilizadas, "APARTADO"); operationResponse = this.FinalizarTransaccionApartado(codeStore, codeBox, request); // Si la venta fue procesada exitosamente se almacena el log de transacción if (operationResponse.CodeNumber.Equals("342")) { // TODO: Falta llenar el objeto transacción //TransactionLogRepository<Transaccion> transactionLogRepository = new TransactionLogRepository<Transaccion>(new TokenDto(codeStore, codeBox)); //Transaccion ventaFinalizada = new Transaccion(); if (request.LineasConDigitoVerificadorIncorrecto != null) { this.RegistrarArticulosConIncidenciaDigitoVerificador(request.FolioApartado, codeStore, codeBox, request.LineasConDigitoVerificadorIncorrecto); } //transactionLogRepository.Add(ventaFinalizada, codeStore + "." + codeBox + "." + finalizarVentaRequest.FolioVenta); } return(operationResponse); }
/// <summary> /// Cancelar apartado /// </summary> /// <param name="folioApartado"></param> /// <returns>Respuesta</returns> public ResponseBussiness <OperationResponse> CancelarApartado(string folioApartado) { return(tryCatch.SafeExecutor(() => { return tryCatch.SafeExecutor(() => { TransApartadoResponse transApartadoResponse = repository.CancelarApartado(folioApartado, this.token.CodeBox, this.token.CodeStore, this.token.CodeEmployee); OperationResponse operationResponse = new OperationResponse(); // TODO: Invocar servicio de Lealtad // Imprimir Cancelación de Apartado y Nota de Crédito en caso de Aplicar ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token); imprimeTicketsMM.PrintTicket(transApartadoResponse.FolioVenta, false); PrintTicketEmisionNotaCredito printTicketEmisionNotaCredito = new PrintTicketEmisionNotaCredito(token); OperationResponse operation = printTicketEmisionNotaCredito.PrintNow(transApartadoResponse.FolioNotaCreditoGenerada); // Regresar el resultado operationResponse.CodeDescription = transApartadoResponse.CodeDescription; operationResponse.CodeNumber = transApartadoResponse.CodeNumber; return operationResponse; }); })); }
private TransApartadoResponse AbonarApartadoInternal(int codeStore, int codeBox, int codeEmployee, AbonoApartadoRequest abonoApartadoRequest, decimal abonoPagado) { TransApartadoResponse operationResponse = new TransApartadoResponse(); InformacionAsociadaRetiroEfectivo informacionAsociadaRetiroEfectivo = new InformacionAsociadaRetiroEfectivo(); var parameters = new Dictionary <string, object>(); parameters.Add("@FolioApartado", abonoApartadoRequest.FolioApartado); parameters.Add("@CodigoCaja", codeBox); parameters.Add("@CodigoTienda", codeStore); parameters.Add("@CodigoEmpleado", codeEmployee); parameters.Add("@ImportePagado", abonoApartadoRequest.ImportePagado); parameters.Add("@ImporteCambio", abonoApartadoRequest.ImporteCambio); parameters.Add("@AbonoPagado", abonoPagado); parameters.Add("@Saldo", abonoApartadoRequest.Saldo); if (abonoApartadoRequest.ApartadoLiquidado) { parameters.Add("@EsLiquidacion", 1); } else { parameters.Add("@EsLiquidacion", 0); } List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>(); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeEfectivoMaximo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@EfectivoMaximoCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@DotacionInicial", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MontoActualCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MostrarAlertaRetiroEfectivo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@PermitirIgnorar", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@CodigoResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); var result = data.ExecuteProcedure("[dbo].[sp_vanti_server_AbonarApartado]", parameters, parametersOut); // Información referente a retiro de Efectivo informacionAsociadaRetiroEfectivo.MensajeEfectivoMaximo = result["@MensajeEfectivoMaximo"].ToString(); informacionAsociadaRetiroEfectivo.EfectivoMaximoPermitidoCaja = Convert.ToDecimal(result["@EfectivoMaximoCaja"]); informacionAsociadaRetiroEfectivo.DotacionInicialCaja = Convert.ToDecimal(result["@DotacionInicial"]); informacionAsociadaRetiroEfectivo.EfectivoActualCaja = Convert.ToDecimal(result["@MontoActualCaja"]); informacionAsociadaRetiroEfectivo.MostrarAlertaRetiroEfectivo = Convert.ToBoolean(result["@MostrarAlertaRetiroEfectivo"]); informacionAsociadaRetiroEfectivo.PermitirIgnorarAlertaRetiroEfectivo = Convert.ToBoolean(result["@PermitirIgnorar"]); operationResponse.informacionAsociadaRetiroEfectivo = informacionAsociadaRetiroEfectivo; // Información referente a estatus de la operación operationResponse.CodeNumber = result["@CodigoResultado"].ToString(); operationResponse.CodeDescription = result["@MensajeResultado"].ToString(); operationResponse.FolioVenta = result["@FolioVenta"].ToString(); return(operationResponse); }
private TransApartadoResponse FinalizarTransaccionApartado(int codeStore, int codeBox, FinalizarApartadoRequest finalizarApartadoRequest) { TransApartadoResponse operationResponse = new TransApartadoResponse(); InformacionAsociadaRetiroEfectivo informacionAsociadaRetiroEfectivo = new InformacionAsociadaRetiroEfectivo(); var parameters = new Dictionary <string, object>(); parameters.Add("@FolioApartado", finalizarApartadoRequest.FolioApartado); parameters.Add("@CodigoCaja", codeBox); parameters.Add("@CodigoTienda", codeStore); parameters.Add("@TotalPagosRealizados", finalizarApartadoRequest.FormasPagoUtilizadas.Length); parameters.Add("@DiasVencimiento", finalizarApartadoRequest.DiasVencimiento); parameters.Add("@ImportePago", finalizarApartadoRequest.ImportePagado); parameters.Add("@Saldo", finalizarApartadoRequest.Saldo); List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>(); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeEfectivoMaximo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@EfectivoMaximoCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@DotacionInicial", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MontoActualCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MostrarAlertaRetiroEfectivo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@PermitirIgnorar", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@CodigoResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); var result = data.ExecuteProcedure("[sp_vanti_FinalizarTransaccionApartado]", parameters, parametersOut); // Información referente a retiro de Efectivo informacionAsociadaRetiroEfectivo.MensajeEfectivoMaximo = result["@MensajeEfectivoMaximo"].ToString(); informacionAsociadaRetiroEfectivo.EfectivoMaximoPermitidoCaja = Convert.ToDecimal(result["@EfectivoMaximoCaja"]); informacionAsociadaRetiroEfectivo.DotacionInicialCaja = Convert.ToDecimal(result["@DotacionInicial"]); informacionAsociadaRetiroEfectivo.EfectivoActualCaja = Convert.ToDecimal(result["@MontoActualCaja"]); informacionAsociadaRetiroEfectivo.MostrarAlertaRetiroEfectivo = Convert.ToBoolean(result["@MostrarAlertaRetiroEfectivo"]); informacionAsociadaRetiroEfectivo.PermitirIgnorarAlertaRetiroEfectivo = Convert.ToBoolean(result["@PermitirIgnorar"]); operationResponse.informacionAsociadaRetiroEfectivo = informacionAsociadaRetiroEfectivo; // Información referente a estatus de la operación operationResponse.CodeNumber = result["@CodigoResultado"].ToString(); operationResponse.CodeDescription = result["@MensajeResultado"].ToString(); operationResponse.FolioVenta = result["@FolioVenta"].ToString(); return(operationResponse); }