Files
sap_tfi_2026/diagrams/svg/D-ROB-VEN-001 — Diagrama de Robustez: Crear Presupuesto.svg
saptfi2026-bot dd3a98b8d5 feat(iter-1-completa): PDFs, diagramas extra, EV-COD validadas, material educativo
Cambios desde el commit anterior:

PDFs y formatos visuales (Paso 1):
- 11 PNGs + 11 SVGs + 11 PDFs generados con PlantUML 1.2021.16
- Conversión PNG→PDF con fpdf2 (workaround para Java 8)

Diagramas adicionales (Paso 2):
- d_rob_ven_001_crear_presupuesto.puml + .pdf
- d_sec_ven_001_crear_presupuesto.puml + .pdf
- d_rob_ent_002_reservar_productos.puml + .pdf
- d_sec_ent_002_reservar_productos.puml + .pdf
- d_rob_fac_001_crear_factura.puml + .pdf
- d_sec_fac_001_crear_factura.puml + .pdf

EV-COD adicionales (Paso 3):
- EV-COD-021 a EV-COD-030 (10 nuevas evidencias)
- EV-INF reducidas de 22 a 8 (14 promovidas a EV-COD)
- evidence/index.md con catálogo completo de evidencias

Material educativo (Paso 4):
- docs/10_material_estudio/README.md
- docs/10_material_estudio/01_que_es_iconix.md
- docs/10_material_estudio/02_aplicacion_a_odoo.md
- docs/10_material_estudio/03_como_leer_los_cu.md
- docs/10_material_estudio/04_ejercicios_practicos.md

Matriz de trazabilidad actualizada con las nuevas EV-COD.
2026-06-23 20:41:21 -03:00

58 lines
16 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="690px" preserveAspectRatio="none" style="width:981px;height:690px;background:#FFFFFF;" version="1.1" viewBox="0 0 981 690" width="981px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="460" x="257" y="23.1387">SAP-TFI-2026 — Diagrama de Robustez - Crear Presupuesto (CU-VEN-001)</text><rect fill="#FFFFFF" height="183.7813" style="stroke:#000000;stroke-width:2.0;" width="954" x="10" y="322.7188"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="53" x2="53" y1="109.9375" y2="523.5"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="174.5" x2="174.5" y1="109.9375" y2="523.5"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="301.5" x2="301.5" y1="109.9375" y2="523.5"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="494" x2="494" y1="109.9375" y2="523.5"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="722" x2="722" y1="109.9375" y2="523.5"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="849" x2="849" y1="109.9375" y2="523.5"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="924" x2="924" y1="109.9375" y2="523.5"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="61" x="20" y="107.1074">Vendedor</text><ellipse cx="53.5" cy="42.9688" fill="#FEFECE" rx="8" ry="8" style="stroke:#A80036;stroke-width:2.0;"/><path d="M53.5,50.9688 L53.5,77.9688 M40.5,58.9688 L66.5,58.9688 M53.5,77.9688 L40.5,92.9688 M53.5,77.9688 L66.5,92.9688 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="61" x="20" y="533.6387">Vendedor</text><ellipse cx="53.5" cy="546.4688" fill="#FEFECE" rx="8" ry="8" style="stroke:#A80036;stroke-width:2.0;"/><path d="M53.5,554.4688 L53.5,581.4688 M40.5,562.4688 L66.5,562.4688 M53.5,581.4688 L40.5,596.4688 M53.5,581.4688 L66.5,596.4688 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="80" x="131.5" y="93.1387">Boton Nuevo</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="75" x="134" y="107.1074">(sale.menu)</text><path d="M154,54 L154,78 M154,66 L171,66 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><ellipse cx="183" cy="66" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="80" x="131.5" y="533.6387">Boton Nuevo</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="75" x="134" y="547.6074">(sale.menu)</text><path d="M154,554.4375 L154,578.4375 M154,566.4375 L171,566.4375 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><ellipse cx="183" cy="566.4375" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="31" x="283" y="93.1387">Form</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="142" x="227.5" y="107.1074">(view_sale_order_form)</text><path d="M281,54 L281,78 M281,66 L298,66 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><ellipse cx="310" cy="66" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="31" x="283" y="533.6387">Form</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="142" x="227.5" y="547.6074">(view_sale_order_form)</text><path d="M281,554.4375 L281,578.4375 M281,566.4375 L298,566.4375 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><ellipse cx="310" cy="566.4375" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="62" x="460.5" y="93.1387">SaleOrder</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="153" x="415" y="107.1074">(action_quotation_send)</text><ellipse cx="494.5" cy="66" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><polygon fill="#A80036" points="490.5,54,496.5,49,494.5,54,496.5,59,490.5,54" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="62" x="460.5" y="533.6387">SaleOrder</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="153" x="415" y="547.6074">(action_quotation_send)</text><ellipse cx="494.5" cy="566.4375" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><polygon fill="#A80036" points="490.5,554.4375,496.5,549.4375,494.5,554.4375,496.5,559.4375,490.5,554.4375" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="86" x="676.5" y="93.1387">Mail Compose</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="157" x="641" y="107.1074">(mail.compose.message)</text><ellipse cx="722.5" cy="66" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><polygon fill="#A80036" points="718.5,54,724.5,49,722.5,54,724.5,59,718.5,54" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="86" x="676.5" y="533.6387">Mail Compose</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="157" x="641" y="547.6074">(mail.compose.message)</text><ellipse cx="722.5" cy="566.4375" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><polygon fill="#A80036" points="718.5,554.4375,724.5,549.4375,722.5,554.4375,724.5,559.4375,718.5,554.4375" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="64" x="814" y="93.1387">sale.order</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="40" x="826" y="107.1074">(draft)</text><ellipse cx="849" cy="66" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><line style="stroke:#A80036;stroke-width:2.0;" x1="837" x2="861" y1="80" y2="80"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="64" x="814" y="533.6387">sale.order</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="40" x="826" y="547.6074">(draft)</text><ellipse cx="849" cy="566.4375" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><line style="stroke:#A80036;stroke-width:2.0;" x1="837" x2="861" y1="580.4375" y2="580.4375"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="54" x="894" y="107.1074">mail.mail</text><ellipse cx="924" cy="79.9688" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><line style="stroke:#A80036;stroke-width:2.0;" x1="912" x2="936" y1="93.9688" y2="93.9688"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="54" x="894" y="533.6387">mail.mail</text><ellipse cx="924" cy="552.4688" fill="#FEFECE" rx="12" ry="12" style="stroke:#A80036;stroke-width:2.0;"/><line style="stroke:#A80036;stroke-width:2.0;" x1="912" x2="936" y1="566.4688" y2="566.4688"/><polygon fill="#A80036" points="162.5,135.9063,172.5,139.9063,162.5,143.9063,166.5,139.9063" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53.5" x2="168.5" y1="139.9063" y2="139.9063"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="97" x="60.5" y="135.0762">1. Click "Nuevo"</text><polygon fill="#A80036" points="837,163.875,847,167.875,837,171.875,841,167.875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="174.5" x2="843" y1="167.875" y2="167.875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="167" x="181.5" y="163.0449">2. Crea sale.order en draft</text><polygon fill="#A80036" points="312.5,191.8438,302.5,195.8438,312.5,199.8438,308.5,195.8438" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="306.5" x2="848" y1="195.8438" y2="195.8438"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="77" x="318.5" y="191.0137">3. Abre form</text><polygon fill="#A80036" points="64.5,219.8125,54.5,223.8125,64.5,227.8125,60.5,223.8125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="58.5" x2="300.5" y1="223.8125" y2="223.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="99" x="70.5" y="218.9824">4. Muestra form</text><polygon fill="#A80036" points="289.5,247.7813,299.5,251.7813,289.5,255.7813,293.5,251.7813" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53.5" x2="295.5" y1="251.7813" y2="251.7813"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="172" x="60.5" y="246.9512">5. Completa cliente y lineas</text><polygon fill="#A80036" points="837,275.75,847,279.75,837,283.75,841,279.75" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="301.5" x2="843" y1="279.75" y2="279.75"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="215" x="308.5" y="274.9199">6. Actualiza partner_id y order_line</text><polygon fill="#A80036" points="312.5,303.7188,302.5,307.7188,312.5,311.7188,308.5,307.7188" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="306.5" x2="848" y1="307.7188" y2="307.7188"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="245" x="318.5" y="302.8887">7. Calcula totales (_compute_amounts)</text><path d="M10,322.7188 L79,322.7188 L79,327.7188 L69,337.7188 L10,337.7188 L10,322.7188 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="183.7813" style="stroke:#000000;stroke-width:2.0;" width="954" x="10" y="322.7188"/><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="24" x="25" y="334.8574">opt</text><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="135" x="94" y="335.8574">[Si envia por email]</text><polygon fill="#A80036" points="289.5,354.6563,299.5,358.6563,289.5,362.6563,293.5,358.6563" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53.5" x2="295.5" y1="358.6563" y2="358.6563"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="96" x="60.5" y="353.8262">8. Click "Enviar"</text><polygon fill="#A80036" points="482.5,382.625,492.5,386.625,482.5,390.625,486.5,386.625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="301.5" x2="488.5" y1="386.625" y2="386.625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="169" x="308.5" y="381.7949">9. action_quotation_send()</text><polygon fill="#A80036" points="837,410.5938,847,414.5938,837,418.5938,841,414.5938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="494.5" x2="843" y1="414.5938" y2="414.5938"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="168" x="501.5" y="409.7637">10. Cambia estado a 'sent'</text><polygon fill="#A80036" points="710.5,438.5625,720.5,442.5625,710.5,446.5625,714.5,442.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="494.5" x2="716.5" y1="442.5625" y2="442.5625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="204" x="501.5" y="437.7324">11. Crea mail.compose.message</text><polygon fill="#A80036" points="912,466.5313,922,470.5313,912,474.5313,916,470.5313" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="722.5" x2="918" y1="470.5313" y2="470.5313"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="128" x="729.5" y="465.7012">12. Genera mail.mail</text><polygon fill="#A80036" points="64.5,494.5,54.5,498.5,64.5,502.5,60.5,498.5" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="58.5" x2="923" y1="498.5" y2="498.5"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="94" x="70.5" y="493.6699">13. Envia email</text><rect fill="#DDDDDD" height="65.875" rx="5" ry="5" style="stroke:#000000;stroke-width:1.0;" width="264" x="701" y="608.4688"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="144" x="707" y="624.6074">Proyecto: SAP-TFI-2026</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="120" x="707" y="638.5762">Agente: saptfi2026</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="124" x="707" y="652.5449">Metodologia: ICONIX</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="252" x="707" y="666.5137">Fuente: Ingenieria inversa de Odoo 19.0</text><!--MD5=[3734df97187feedb97407e44c86969ec]
@startuml D-ROB-VEN-001 — Diagrama de Robustez: Crear Presupuesto
title SAP-TFI-2026 — Diagrama de Robustez - Crear Presupuesto (CU-VEN-001)
skinparam shadowing false
skinparam handwritten false
skinparam defaultFontName Arial
skinparam defaultFontSize 12
skinparam linetype ortho
skinparam backgroundColor white
actor "Vendedor" as V
boundary "Boton Nuevo\n(sale.menu)" as B_New
boundary "Form\n(view_sale_order_form)" as B_Form
control "SaleOrder\n(action_quotation_send)" as C_Send
control "Mail Compose\n(mail.compose.message)" as C_Mail
entity "sale.order\n(draft)" as E_SO
entity "mail.mail" as E_Mail
V - -> B_New : 1. Click "Nuevo"
B_New - -> E_SO : 2. Crea sale.order en draft
E_SO - -> B_Form : 3. Abre form
B_Form - -> V : 4. Muestra form
V - -> B_Form : 5. Completa cliente y lineas
B_Form - -> E_SO : 6. Actualiza partner_id y order_line
E_SO - -> B_Form : 7. Calcula totales (_compute_amounts)
opt Si envia por email
V - -> B_Form : 8. Click "Enviar"
B_Form - -> C_Send : 9. action_quotation_send()
C_Send - -> E_SO : 10. Cambia estado a 'sent'
C_Send - -> C_Mail : 11. Crea mail.compose.message
C_Mail - -> E_Mail : 12. Genera mail.mail
E_Mail - -> V : 13. Envia email
end
legend right
Proyecto: SAP-TFI-2026
Agente: saptfi2026
Metodologia: ICONIX
Fuente: Ingenieria inversa de Odoo 19.0
endlegend
@enduml
PlantUML version 1.2021.16(Wed Dec 08 14:25:22 ART 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: es
Country: AR
--></g></svg>