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); }
public ResponseBussiness <OperationResponse> FinalizarApartado(FinalizarApartadoRequest request) { TokenDto token = new TokenService().Get(); ResponseBussiness <OperationResponse> response = new ApartadosBusiness(token).FinalizarApartado(request); return(response); }
/// <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; })); }
private OperationResponse ActivarTarjetaRegalo(FinalizarApartadoRequest request) { OperationResponse response = new OperationResponse(); response.CodeNumber = "1"; TarjetaRegalosBusiness business = new TarjetaRegalosBusiness(this.token); foreach (InformacionFoliosTarjeta informacion in request.InformacionFoliosTarjeta) { var respuesta = business.ActivarTarjeta(this.token.CodeEmployee, informacion.FolioTarjeta.ToString(), request.FolioApartado); if (response.CodeNumber == "0") { response.CodeDescription = respuesta.Data.CodeDescription; } } return(response); }
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); }
/// <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); }