/// <summary> /// Procesar pago por venta a mayorista /// </summary> /// <param name="request">Movimiento venta a mayorista</param> /// <returns>Resultado de la operación</returns> public ResponseBussiness <OperationResponse> ProcesarVentaMayorista(ProcesarMovimientoMayorista request) { return(tryCatch.SafeExecutor(() => { using (TransactionScope scope = new TransactionScope()) { InfoValeResponse infoVale = new MayoristasBusiness(this.token).ValidarVale(request.NumeroVale); if (infoVale.Estatus == "D") { // Se procesan las promociones por venta foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = repository.PersistirPromocionesVenta(request.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } // Se procesan las promociones por línea de venta foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = repository.PersistirPromocionesLineaVenta(request.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } // Se procesa el pago en base de datos localmente OperationResponse responseLocal = repository.ProcesarMovimientoMayorista(token.CodeStore, token.CodeBox, token.CodeEmployee, request); if (responseLocal.CodeNumber == "354") { var codigoTransaccion = int.Parse(responseLocal.CodeDescription); var responseVentaEmpleado = new MayoristasBusiness(this.token).PagoVentaMayorista(request, codigoTransaccion); if (responseVentaEmpleado.CodeNumber == "1") { scope.Complete(); } return responseVentaEmpleado; } else { return responseLocal; } } else { OperationResponse operationVale = new OperationResponse(); operationVale.CodeNumber = "0"; operationVale.CodeDescription = this.repository.ObtenerMensajeValeNoDisponible().CodeDescription; return operationVale; } } })); }
private OperationResponse PagoVentaCreditoMayorista(FinalizarVentaRequest request) { OperationResponse response = new OperationResponse(); response.CodeNumber = "1"; VentaResponse venta = this.repository.ObtenerVentaPorFolio(request.FolioVenta, 0); foreach (LineaTicket linea in venta.Lineas) { if (linea.TipoDetalleVenta == "43") { PagoCreditoMayoristaRequest pago = new PagoCreditoMayoristaRequest(); pago.CodigoMayorista = venta.CodigoMayorista; pago.FolioOperacionAsociada = venta.FolioVenta; pago.ImportePago = linea.Articulo.PrecioConImpuestos; response = new MayoristasBusiness(this.token).PagoCreditoMayorista(pago, venta.NumeroTransaccion); response.CodeNumber = "1"; } } return(response); }