# Cotización, Visto Bueno y Abono

La cotización conecta una solicitud `R_Request` con una orden/cotización `C_Order`. El portal permite consultar el detalle, aceptar la cotización, enviar mensajes de ajuste y registrar el abono.

## Generación de la cotización

En el plugin se identifica el proceso `CreateQuoteFromRequest`, que crea una `C_Order` de venta tipo cotización desde el registro activo de `R_Request`. El proceso:

1. Valida que exista una solicitud activa.
2. Exige organización y almacén.
3. Lee `C_BPartner_ID`, `AD_User_ID`, `SalesRep_ID` y `Summary` desde la solicitud.
4. Resuelve tipo de documento de cotización/propuesta/oferta.
5. Resuelve lista de precios desde parámetro, tercero o lista de precios de venta por defecto.
6. Busca ubicación activa del tercero, prefiriendo facturación.
7. Crea `C_Order` con vínculo `R_Request_ID`.
8. Opcionalmente crea línea con producto.
9. Actualiza `R_Request.C_Order_ID`.

## Aceptación y ajuste

- El portal lee la cotización desde `C_Order` expandiendo `C_OrderLine`.
- Si el usuario acepta, el portal actualiza `R_Request.CDS_QuoteAccepted = true`.
- Si el usuario solicita ajuste o conversa sobre la cotización, se crean mensajes en `CDS_QuoteCorrections`.

## Chat de cotización

El chat de cotización permite la comunicación entre el portal y Lirion mientras la cotización todavía no ha sido aceptada. Se usa para dudas, ajustes o aclaraciones relacionadas con la cotización antes de que el cliente confirme la aceptación.

<p class="callout warning">**Regla de bloqueo:** cuando `CDS_QuoteAccepted = 'Y'`, el chat queda en solo lectura tanto en el portal como en Lirion. Desde ese momento ya no se pueden escribir nuevos mensajes.</p>

<table id="bkmrk-condici%C3%B3n-comportami" style="width: 100%; border-collapse: collapse; margin: 12px 0 20px 0;"><thead><tr><th style="border: 1px solid #d8dee9; padding: 12px; background: #eef2f7; text-align: left;">Condición</th><th style="border: 1px solid #d8dee9; padding: 12px; background: #eef2f7; text-align: left;">Comportamiento del chat</th></tr></thead><tbody><tr><td style="border: 1px solid #d8dee9; padding: 12px; vertical-align: top;">`CDS_QuoteAccepted != 'Y'`</td><td style="border: 1px solid #d8dee9; padding: 12px; vertical-align: top;">El portal y Lirion pueden registrar mensajes sobre la cotización.</td></tr><tr><td style="border: 1px solid #d8dee9; padding: 12px; vertical-align: top;">`CDS_QuoteAccepted = 'Y'`</td><td style="border: 1px solid #d8dee9; padding: 12px; vertical-align: top;">El chat queda bloqueado para escritura y solo permite consultar el historial.</td></tr></tbody></table>

[![Captura de pantalla 2026-05-19 a la(s) 4.09.27 p. m..png](https://docs.primware.net/uploads/images/gallery/2026-05/scaled-1680-/xy7K3j18Z8P7RIg1-captura-de-pantalla-2026-05-19-a-las-4-09-27-p-m.png)](https://docs.primware.net/uploads/images/gallery/2026-05/xy7K3j18Z8P7RIg1-captura-de-pantalla-2026-05-19-a-las-4-09-27-p-m.png)

## Visto bueno

Cuando una solicitud requiere aprobación, el portal bloquea el pago hasta que `CDS_ApprovalStatus` indique aprobación. El evento `RequestApprovalLinker` crea o actualiza un registro `CDS_Approval` cuando cambia el estado de aprobación en `R_Request`.

## Abono

Cuando la cotización está aceptada y no requiere visto bueno, o ya fue aprobada, el portal permite registrar el abono. El portal actualiza `ReferenceNo`, mantiene `CDS_QuoteAccepted = true` y adjunta el comprobante de pago al `R_Request`.

<div drawio-diagram="109"><img src="https://docs.primware.net/uploads/images/drawio/2026-05/QwyZ8GakTNeDMScw-drawing-1-1778729937.png" alt="QwyZ8GakTNeDMScw-drawing-1-1778729937.png"/></div>