mirror of
https://github.com/cursos-uai/sap_tfi_2026.git
synced 2026-07-31 20:48:30 -03:00
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.
91 lines
25 KiB
XML
91 lines
25 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="1346px" preserveAspectRatio="none" style="width:1110px;height:1346px;background:#FFFFFF;" version="1.1" viewBox="0 0 1110 1346" width="1110px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="468" x="317.75" y="23.1387">SAP-TFI-2026 — Diagrama de Secuencia - Crear Presupuesto (CU-VEN-001)</text><rect fill="#FFFFFF" height="1021.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="260.5" y="139.9063"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="167.875"/><rect fill="#FFFFFF" height="180.8125" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="307.7188"/><rect fill="#FFFFFF" height="111.875" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="686.3125"/><rect fill="#FFFFFF" height="249.75" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="877.0938"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="885.5" y="1014.9688"/><rect fill="#FFFFFF" height="99.875" style="stroke:#000000;stroke-width:2.0;" width="916" x="177.5" y="531.5"/><rect fill="#FFFFFF" height="321.6563" style="stroke:#000000;stroke-width:2.0;" width="1083.5" x="10" y="813.1875"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="53" x2="53" y1="109.9375" y2="1179.8125"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="265.5" x2="265.5" y1="109.9375" y2="1179.8125"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="600.5" x2="600.5" y1="109.9375" y2="1179.8125"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="890" x2="890" y1="109.9375" y2="1179.8125"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="1044.5" x2="1044.5" y1="109.9375" y2="1179.8125"/><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="1189.9512">Vendedor</text><ellipse cx="53.5" cy="1202.7813" fill="#FEFECE" rx="8" ry="8" style="stroke:#A80036;stroke-width:2.0;"/><path d="M53.5,1210.7813 L53.5,1237.7813 M40.5,1218.7813 L66.5,1218.7813 M53.5,1237.7813 L40.5,1252.7813 M53.5,1237.7813 L66.5,1252.7813 " fill="none" style="stroke:#A80036;stroke-width:2.0;"/><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="156" x="187.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="31" x="250" y="85.1387">Form</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="142" x="194.5" y="99.1074">(view_sale_order_form)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="156" x="187.5" y="1178.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="31" x="250" y="1196.9512">Form</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="142" x="194.5" y="1210.9199">(view_sale_order_form)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="76" x="562.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="62" x="569.5" y="85.1387">SaleOrder</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="27" x="587" y="99.1074">ORM</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="76" x="562.5" y="1178.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="62" x="569.5" y="1196.9512">SaleOrder</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="27" x="587" y="1210.9199">ORM</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="77" x="852" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="24" x="878.5" y="85.1387">Mail</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="63" x="859" y="99.1074">Composer</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="77" x="852" y="1178.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="24" x="878.5" y="1196.9512">Mail</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="63" x="859" y="1210.9199">Composer</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="72" x="1005.5" y="107.1074">PostgreSQL</text><path d="M1026.5,59.9688 C1026.5,49.9688 1044.5,49.9688 1044.5,49.9688 C1044.5,49.9688 1062.5,49.9688 1062.5,59.9688 L1062.5,85.9688 C1062.5,95.9688 1044.5,95.9688 1044.5,95.9688 C1044.5,95.9688 1026.5,95.9688 1026.5,85.9688 L1026.5,59.9688 " fill="#FEFECE" style="stroke:#000000;stroke-width:1.5;"/><path d="M1026.5,59.9688 C1026.5,69.9688 1044.5,69.9688 1044.5,69.9688 C1044.5,69.9688 1062.5,69.9688 1062.5,59.9688 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="72" x="1005.5" y="1189.9512">PostgreSQL</text><path d="M1026.5,1202.7813 C1026.5,1192.7813 1044.5,1192.7813 1044.5,1192.7813 C1044.5,1192.7813 1062.5,1192.7813 1062.5,1202.7813 L1062.5,1228.7813 C1062.5,1238.7813 1044.5,1238.7813 1044.5,1238.7813 C1044.5,1238.7813 1026.5,1238.7813 1026.5,1228.7813 L1026.5,1202.7813 " fill="#FEFECE" style="stroke:#000000;stroke-width:1.5;"/><path d="M1026.5,1202.7813 C1026.5,1212.7813 1044.5,1212.7813 1044.5,1212.7813 C1044.5,1212.7813 1062.5,1212.7813 1062.5,1202.7813 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><rect fill="#FFFFFF" height="1021.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="260.5" y="139.9063"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="167.875"/><rect fill="#FFFFFF" height="180.8125" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="307.7188"/><rect fill="#FFFFFF" height="111.875" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="686.3125"/><rect fill="#FFFFFF" height="249.75" style="stroke:#A80036;stroke-width:1.0;" width="10" x="595.5" y="877.0938"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="885.5" y="1014.9688"/><polygon fill="#A80036" points="248.5,135.9063,258.5,139.9063,248.5,143.9063,252.5,139.9063" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53.5" x2="254.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="583.5,163.875,593.5,167.875,583.5,171.875,587.5,167.875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="270.5" x2="589.5" y1="167.875" y2="167.875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="84" x="277.5" y="163.0449">2. Create({})</text><polygon fill="#A80036" points="1032.5,191.8438,1042.5,195.8438,1032.5,199.8438,1036.5,195.8438" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="1038.5" y1="195.8438" y2="195.8438"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="220" x="612.5" y="191.0137">3. INSERT sale.order (state='draft')</text><polygon fill="#A80036" points="616.5,219.8125,606.5,223.8125,616.5,227.8125,612.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="610.5" x2="1043.5" y1="223.8125" y2="223.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="27" x="622.5" y="218.9824">4. id</text><polygon fill="#A80036" points="281.5,247.7813,271.5,251.7813,281.5,255.7813,277.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="275.5" x2="599.5" y1="251.7813" y2="251.7813"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="125" x="287.5" y="246.9512">5. sale.order record</text><polygon fill="#A80036" points="248.5,275.75,258.5,279.75,248.5,283.75,252.5,279.75" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53.5" x2="254.5" y1="279.75" y2="279.75"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="152" x="60.5" y="274.9199">6. Selecciona partner_id</text><polygon fill="#A80036" points="583.5,303.7188,593.5,307.7188,583.5,311.7188,587.5,307.7188" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="270.5" x2="589.5" y1="307.7188" y2="307.7188"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="156" x="277.5" y="302.8887">7. write({partner_id: ...})</text><polygon fill="#A80036" points="1032.5,331.6875,1042.5,335.6875,1032.5,339.6875,1036.5,335.6875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="1038.5" y1="335.6875" y2="335.6875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="250" x="612.5" y="330.8574">8. UPDATE sale.order SET partner_id=...</text><polygon fill="#A80036" points="616.5,359.6563,606.5,363.6563,616.5,367.6563,612.5,363.6563" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="610.5" x2="1043.5" y1="363.6563" y2="363.6563"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="32" x="622.5" y="358.8262">9. OK</text><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="647.5" y1="391.625" y2="391.625"/><line style="stroke:#A80036;stroke-width:1.0;" x1="647.5" x2="647.5" y1="391.625" y2="404.625"/><line style="stroke:#A80036;stroke-width:1.0;" x1="606.5" x2="647.5" y1="404.625" y2="404.625"/><polygon fill="#A80036" points="616.5,400.625,606.5,404.625,616.5,408.625,612.5,404.625" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="266" x="612.5" y="386.7949">10. _onchange_partner_id() carga pricelist</text><polygon fill="#A80036" points="1032.5,428.5938,1042.5,432.5938,1032.5,436.5938,1036.5,432.5938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="1038.5" y1="432.5938" y2="432.5938"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="175" x="612.5" y="427.7637">11. SELECT product.pricelist</text><polygon fill="#A80036" points="616.5,456.5625,606.5,460.5625,616.5,464.5625,612.5,460.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="610.5" x2="1043.5" y1="460.5625" y2="460.5625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="73" x="622.5" y="455.7324">12. pricelist</text><polygon fill="#A80036" points="281.5,484.5313,271.5,488.5313,281.5,492.5313,277.5,488.5313" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="275.5" x2="599.5" y1="488.5313" y2="488.5313"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="165" x="287.5" y="483.7012">13. pricelist_id actualizado</text><polygon fill="#A80036" points="248.5,512.5,258.5,516.5,248.5,520.5,252.5,516.5" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53.5" x2="254.5" y1="516.5" y2="516.5"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="110" x="60.5" y="511.6699">14. Agrega lineas</text><path d="M177.5,531.5 L253.5,531.5 L253.5,536.5 L243.5,546.5 L177.5,546.5 L177.5,531.5 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="99.875" style="stroke:#000000;stroke-width:2.0;" width="916" x="177.5" y="531.5"/><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="31" x="192.5" y="543.6387">loop</text><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="111" x="268.5" y="544.6387">[Por cada linea]</text><polygon fill="#A80036" points="588.5,563.4375,598.5,567.4375,588.5,571.4375,592.5,567.4375" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="270.5" x2="594.5" y1="567.4375" y2="567.4375"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="265" x="277.5" y="562.6074">15. order_line = [(0, 0, {product_id, qty})]</text><polygon fill="#A80036" points="1032.5,591.4063,1042.5,595.4063,1032.5,599.4063,1036.5,595.4063" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="600.5" x2="1038.5" y1="595.4063" y2="595.4063"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="161" x="607.5" y="590.5762">16. INSERT sale.order.line</text><polygon fill="#A80036" points="611.5,619.375,601.5,623.375,611.5,627.375,607.5,623.375" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="605.5" x2="1043.5" y1="623.375" y2="623.375"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="35" x="617.5" y="618.5449">17. id</text><polygon fill="#A80036" points="248.5,654.3438,258.5,658.3438,248.5,662.3438,252.5,658.3438" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53.5" x2="254.5" y1="658.3438" y2="658.3438"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="183" x="60.5" y="653.5137">18. Sistema recalcula totales</text><polygon fill="#A80036" points="583.5,682.3125,593.5,686.3125,583.5,690.3125,587.5,686.3125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="270.5" x2="589.5" y1="686.3125" y2="686.3125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="156" x="277.5" y="681.4824">19. _compute_amounts()</text><polygon fill="#A80036" points="1032.5,710.2813,1042.5,714.2813,1032.5,718.2813,1036.5,714.2813" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="1038.5" y1="714.2813" y2="714.2813"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="154" x="612.5" y="709.4512">20. SELECT tax, discount</text><polygon fill="#A80036" points="616.5,738.25,606.5,742.25,616.5,746.25,612.5,742.25" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="610.5" x2="1043.5" y1="742.25" y2="742.25"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="60" x="622.5" y="737.4199">21. datos</text><polygon fill="#A80036" points="1032.5,766.2188,1042.5,770.2188,1032.5,774.2188,1036.5,770.2188" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="1038.5" y1="770.2188" y2="770.2188"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="132" x="612.5" y="765.3887">22. UPDATE amounts</text><polygon fill="#A80036" points="281.5,794.1875,271.5,798.1875,281.5,802.1875,277.5,798.1875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="275.5" x2="599.5" y1="798.1875" y2="798.1875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="301" x="287.5" y="793.3574">23. amount_untaxed, amount_tax, amount_total</text><path d="M10,813.1875 L79,813.1875 L79,818.1875 L69,828.1875 L10,828.1875 L10,813.1875 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="321.6563" style="stroke:#000000;stroke-width:2.0;" width="1083.5" x="10" y="813.1875"/><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="24" x="25" y="825.3262">opt</text><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="135" x="94" y="826.3262">[Si envia por email]</text><polygon fill="#A80036" points="248.5,845.125,258.5,849.125,248.5,853.125,252.5,849.125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53.5" x2="254.5" y1="849.125" y2="849.125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="104" x="60.5" y="844.2949">24. Click "Enviar"</text><polygon fill="#A80036" points="583.5,873.0938,593.5,877.0938,583.5,881.0938,587.5,877.0938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="270.5" x2="589.5" y1="877.0938" y2="877.0938"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="177" x="277.5" y="872.2637">25. action_quotation_send()</text><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="647.5" y1="905.0625" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;" x1="647.5" x2="647.5" y1="905.0625" y2="918.0625"/><line style="stroke:#A80036;stroke-width:1.0;" x1="606.5" x2="647.5" y1="918.0625" y2="918.0625"/><polygon fill="#A80036" points="616.5,914.0625,606.5,918.0625,616.5,922.0625,612.5,918.0625" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="220" x="612.5" y="900.2324">26. _validate_analytic_distribution()</text><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="647.5" y1="946.0313" y2="946.0313"/><line style="stroke:#A80036;stroke-width:1.0;" x1="647.5" x2="647.5" y1="946.0313" y2="959.0313"/><line style="stroke:#A80036;stroke-width:1.0;" x1="606.5" x2="647.5" y1="959.0313" y2="959.0313"/><polygon fill="#A80036" points="616.5,955.0313,606.5,959.0313,616.5,963.0313,612.5,959.0313" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="177" x="612.5" y="941.2012">27. mark_so_as_sent = True</text><polygon fill="#A80036" points="1032.5,983,1042.5,987,1032.5,991,1036.5,987" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="1038.5" y1="987" y2="987"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="154" x="612.5" y="982.1699">28. UPDATE state='sent'</text><polygon fill="#A80036" points="873.5,1010.9688,883.5,1014.9688,873.5,1018.9688,877.5,1014.9688" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="605.5" x2="879.5" y1="1014.9688" y2="1014.9688"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="216" x="612.5" y="1010.1387">29. mail.compose.message.create</text><polygon fill="#A80036" points="1032.5,1038.9375,1042.5,1042.9375,1032.5,1046.9375,1036.5,1042.9375" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="895.5" x2="1038.5" y1="1042.9375" y2="1042.9375"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="125" x="902.5" y="1038.1074">30. INSERT mail.mail</text><polygon fill="#A80036" points="906.5,1066.9063,896.5,1070.9063,906.5,1074.9063,902.5,1070.9063" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="900.5" x2="1043.5" y1="1070.9063" y2="1070.9063"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="35" x="912.5" y="1066.0762">31. id</text><polygon fill="#A80036" points="616.5,1094.875,606.5,1098.875,616.5,1102.875,612.5,1098.875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="610.5" x2="889.5" y1="1098.875" y2="1098.875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="40" x="622.5" y="1094.0449">32. OK</text><polygon fill="#A80036" points="281.5,1122.8438,271.5,1126.8438,281.5,1130.8438,277.5,1126.8438" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="275.5" x2="599.5" y1="1126.8438" y2="1126.8438"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="107" x="287.5" y="1122.0137">33. wizard closed</text><polygon fill="#A80036" points="64.5,1157.8125,54.5,1161.8125,64.5,1165.8125,60.5,1161.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="264.5" y1="1161.8125" y2="1161.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="143" x="70.5" y="1156.9824">34. Estado actualizado</text><rect fill="#DDDDDD" height="65.875" rx="5" ry="5" style="stroke:#000000;stroke-width:1.0;" width="264" x="830.5" y="1264.7813"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="144" x="836.5" y="1280.9199">Proyecto: SAP-TFI-2026</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="120" x="836.5" y="1294.8887">Agente: saptfi2026</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="124" x="836.5" y="1308.8574">Metodologia: ICONIX</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="252" x="836.5" y="1322.8262">Fuente: Ingenieria inversa de Odoo 19.0</text><!--MD5=[7e8b8e062dc7d65692d0244bc0075bed]
|
|
@startuml D-SEC-VEN-001 — Diagrama de Secuencia: Crear Presupuesto
|
|
|
|
title SAP-TFI-2026 — Diagrama de Secuencia - 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
|
|
participant "Form\n(view_sale_order_form)" as Form
|
|
participant "SaleOrder\nORM" as SO
|
|
participant "Mail\nComposer" as Mail
|
|
database "PostgreSQL" as DB
|
|
|
|
V -> Form : 1. Click "Nuevo"
|
|
activate Form
|
|
Form -> SO : 2. Create({})
|
|
activate SO
|
|
SO -> DB : 3. INSERT sale.order (state='draft')
|
|
DB - -> SO : 4. id
|
|
SO - -> Form : 5. sale.order record
|
|
deactivate SO
|
|
|
|
V -> Form : 6. Selecciona partner_id
|
|
Form -> SO : 7. write({partner_id: ...})
|
|
activate SO
|
|
SO -> DB : 8. UPDATE sale.order SET partner_id=...
|
|
DB - -> SO : 9. OK
|
|
SO -> SO : 10. _onchange_partner_id() carga pricelist
|
|
SO -> DB : 11. SELECT product.pricelist
|
|
DB - -> SO : 12. pricelist
|
|
SO - -> Form : 13. pricelist_id actualizado
|
|
deactivate SO
|
|
|
|
V -> Form : 14. Agrega lineas
|
|
loop Por cada linea
|
|
Form -> SO : 15. order_line = [(0, 0, {product_id, qty})]
|
|
SO -> DB : 16. INSERT sale.order.line
|
|
DB - -> SO : 17. id
|
|
end
|
|
|
|
V -> Form : 18. Sistema recalcula totales
|
|
Form -> SO : 19. _compute_amounts()
|
|
activate SO
|
|
SO -> DB : 20. SELECT tax, discount
|
|
DB - -> SO : 21. datos
|
|
SO -> DB : 22. UPDATE amounts
|
|
SO - -> Form : 23. amount_untaxed, amount_tax, amount_total
|
|
deactivate SO
|
|
|
|
opt Si envia por email
|
|
V -> Form : 24. Click "Enviar"
|
|
Form -> SO : 25. action_quotation_send()
|
|
activate SO
|
|
SO -> SO : 26. _validate_analytic_distribution()
|
|
SO -> SO : 27. mark_so_as_sent = True
|
|
SO -> DB : 28. UPDATE state='sent'
|
|
SO -> Mail : 29. mail.compose.message.create
|
|
activate Mail
|
|
Mail -> DB : 30. INSERT mail.mail
|
|
DB - -> Mail : 31. id
|
|
Mail - -> SO : 32. OK
|
|
deactivate Mail
|
|
SO - -> Form : 33. wizard closed
|
|
deactivate SO
|
|
end
|
|
|
|
Form - -> V : 34. Estado actualizado
|
|
deactivate Form
|
|
|
|
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> |