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.
90 lines
24 KiB
XML
90 lines
24 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="1071px" preserveAspectRatio="none" style="width:1452px;height:1071px;background:#FFFFFF;" version="1.1" viewBox="0 0 1452 1071" width="1452px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="518" x="463.5" y="23.1387">SAP-TFI-2026 — Diagrama de Secuencia - Confirmar Pedido de Venta (CU-VEN-004)</text><rect fill="#FFFFFF" height="747.1563" style="stroke:#A80036;stroke-width:1.0;" width="10" x="272.5" y="139.9063"/><rect fill="#FFFFFF" height="691.2188" style="stroke:#A80036;stroke-width:1.0;" width="10" x="425.5" y="167.875"/><rect fill="#FFFFFF" height="221.75" style="stroke:#A80036;stroke-width:1.0;" width="10" x="664.5" y="195.8438"/><rect fill="#FFFFFF" height="27.9688" style="stroke:#A80036;stroke-width:1.0;" width="10" x="883.5" y="493.5"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1059" y="605.375"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1193" y="740.2188"/><rect fill="#FFFFFF" height="143.8125" style="stroke:#000000;stroke-width:2.0;" width="773.5" x="10" y="266.7813"/><rect fill="#FFFFFF" height="99.875" style="stroke:none;stroke-width:1.0;" width="773.5" x="10" y="310.7188"/><rect fill="#FFFFFF" height="127.8438" style="stroke:#000000;stroke-width:2.0;" width="1072" x="363" y="704.2813"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="53" x2="53" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="277.5" x2="277.5" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="430" x2="430" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="669.5" x2="669.5" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="888.5" x2="888.5" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="1063.5" x2="1063.5" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="1197.5" x2="1197.5" y1="109.9375" y2="905.0625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="1386" x2="1386" y1="109.9375" y2="905.0625"/><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="915.2012">Vendedor</text><ellipse cx="53.5" cy="928.0313" fill="#FEFECE" rx="8" ry="8" style="stroke:#A80036;stroke-width:2.0;"/><path d="M53.5,936.0313 L53.5,963.0313 M40.5,944.0313 L66.5,944.0313 M53.5,963.0313 L40.5,978.0313 M53.5,963.0313 L66.5,978.0313 " 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="199.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="31" x="262" y="85.1387">Form</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="142" x="206.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="199.5" y="904.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="31" x="262" y="922.2012">Form</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="142" x="206.5" y="936.1699">(view_sale_order_form)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="115" x="373" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="62" x="399.5" y="85.1387">SaleOrder</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="101" x="380" y="99.1074">(action_confirm)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="115" x="373" y="904.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="62" x="399.5" y="922.2012">SaleOrder</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="101" x="380" y="936.1699">(action_confirm)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="208" x="565.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="56" x="641.5" y="85.1387">Validator</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="194" x="572.5" y="99.1074">(_confirmation_error_message)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="208" x="565.5" y="904.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="56" x="641.5" y="922.2012">Validator</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="194" x="572.5" y="936.1699">(_confirmation_error_message)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="210" x="783.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="78" x="849.5" y="85.1387">Conf. Values</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="196" x="790.5" y="99.1074">(_prepare_confirmation_values)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="210" x="783.5" y="904.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="78" x="849.5" y="922.2012">Conf. Values</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="196" x="790.5" y="936.1699">(_prepare_confirmation_values)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="121" x="1003.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="72" x="1028" y="85.1387">Stock Layer</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="107" x="1010.5" y="99.1074">(_action_confirm)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="121" x="1003.5" y="904.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="72" x="1028" y="922.2012">Stock Layer</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="107" x="1010.5" y="936.1699">(_action_confirm)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="127" x="1134.5" y="67"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="80" x="1158" y="85.1387">Invoice Layer</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="113" x="1141.5" y="99.1074">(_create_invoices)</text><rect fill="#FEFECE" height="41.9375" style="stroke:#A80036;stroke-width:1.5;" width="127" x="1134.5" y="904.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="80" x="1158" y="922.2012">Invoice Layer</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="113" x="1141.5" y="936.1699">(_create_invoices)</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="72" x="1347" y="107.1074">PostgreSQL</text><path d="M1368,59.9688 C1368,49.9688 1386,49.9688 1386,49.9688 C1386,49.9688 1404,49.9688 1404,59.9688 L1404,85.9688 C1404,95.9688 1386,95.9688 1386,95.9688 C1386,95.9688 1368,95.9688 1368,85.9688 L1368,59.9688 " fill="#FEFECE" style="stroke:#000000;stroke-width:1.5;"/><path d="M1368,59.9688 C1368,69.9688 1386,69.9688 1386,69.9688 C1386,69.9688 1404,69.9688 1404,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="1347" y="915.2012">PostgreSQL</text><path d="M1368,928.0313 C1368,918.0313 1386,918.0313 1386,918.0313 C1386,918.0313 1404,918.0313 1404,928.0313 L1404,954.0313 C1404,964.0313 1386,964.0313 1386,964.0313 C1386,964.0313 1368,964.0313 1368,954.0313 L1368,928.0313 " fill="#FEFECE" style="stroke:#000000;stroke-width:1.5;"/><path d="M1368,928.0313 C1368,938.0313 1386,938.0313 1386,938.0313 C1386,938.0313 1404,938.0313 1404,928.0313 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><rect fill="#FFFFFF" height="747.1563" style="stroke:#A80036;stroke-width:1.0;" width="10" x="272.5" y="139.9063"/><rect fill="#FFFFFF" height="691.2188" style="stroke:#A80036;stroke-width:1.0;" width="10" x="425.5" y="167.875"/><rect fill="#FFFFFF" height="221.75" style="stroke:#A80036;stroke-width:1.0;" width="10" x="664.5" y="195.8438"/><rect fill="#FFFFFF" height="27.9688" style="stroke:#A80036;stroke-width:1.0;" width="10" x="883.5" y="493.5"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1059" y="605.375"/><rect fill="#FFFFFF" height="83.9063" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1193" y="740.2188"/><polygon fill="#A80036" points="260.5,135.9063,270.5,139.9063,260.5,143.9063,264.5,139.9063" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="53.5" x2="266.5" y1="139.9063" y2="139.9063"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="118" x="60.5" y="135.0762">1. Click "Confirmar"</text><polygon fill="#A80036" points="413.5,163.875,423.5,167.875,413.5,171.875,417.5,167.875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="282.5" x2="419.5" y1="167.875" y2="167.875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="117" x="289.5" y="163.0449">2. action_confirm()</text><polygon fill="#A80036" points="652.5,191.8438,662.5,195.8438,652.5,199.8438,656.5,195.8438" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="435.5" x2="658.5" y1="195.8438" y2="195.8438"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="210" x="442.5" y="191.0137">3. _confirmation_error_message()</text><polygon fill="#A80036" points="1374,219.8125,1384,223.8125,1374,227.8125,1378,223.8125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="674.5" x2="1380" y1="223.8125" y2="223.8125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="135" x="681.5" y="218.9824">4. SELECT state, lines</text><polygon fill="#A80036" points="685.5,247.7813,675.5,251.7813,685.5,255.7813,681.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="679.5" x2="1385" y1="251.7813" y2="251.7813"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="115" x="691.5" y="246.9512">5. estado + líneas</text><path d="M10,266.7813 L74,266.7813 L74,271.7813 L64,281.7813 L10,281.7813 L10,266.7813 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="143.8125" style="stroke:#000000;stroke-width:2.0;" width="773.5" x="10" y="266.7813"/><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="19" x="25" y="278.9199">alt</text><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="184" x="89" y="279.9199">[Si estado OK y líneas OK]</text><polygon fill="#A80036" points="446.5,298.7188,436.5,302.7188,446.5,306.7188,442.5,302.7188" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="663.5" y1="302.7188" y2="302.7188"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="168" x="452.5" y="297.8887">6a. error_msg = None (OK)</text><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="10" x2="783.5" y1="311.7188" y2="311.7188"/><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="63" x="15" y="322.8574">[Si error]</text><polygon fill="#A80036" points="446.5,342.6563,436.5,346.6563,446.5,350.6563,442.5,346.6563" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="663.5" y1="346.6563" y2="346.6563"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="161" x="452.5" y="341.8262">6b. error_msg (UserError)</text><polygon fill="#A80036" points="293.5,370.625,283.5,374.625,293.5,378.625,289.5,374.625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="287.5" x2="424.5" y1="374.625" y2="374.625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="119" x="299.5" y="369.7949">7b. raise UserError</text><polygon fill="#A80036" points="64.5,398.5938,54.5,402.5938,64.5,406.5938,60.5,402.5938" 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="271.5" y1="402.5938" y2="402.5938"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="110" x="70.5" y="397.7637">8b. Muestra error</text><polygon fill="#A80036" points="1374,433.5625,1384,437.5625,1374,441.5625,1378,437.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="435.5" x2="1380" y1="437.5625" y2="437.5625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="264" x="442.5" y="432.7324">9. SELECT order_line for analytic validation</text><polygon fill="#A80036" points="446.5,461.5313,436.5,465.5313,446.5,469.5313,442.5,465.5313" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="1385" y1="465.5313" y2="465.5313"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="61" x="452.5" y="460.7012">10. líneas</text><polygon fill="#A80036" points="871.5,489.5,881.5,493.5,871.5,497.5,875.5,493.5" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="435.5" x2="877.5" y1="493.5" y2="493.5"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="220" x="442.5" y="488.6699">11. _prepare_confirmation_values()</text><polygon fill="#A80036" points="446.5,517.4688,436.5,521.4688,446.5,525.4688,442.5,521.4688" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="887.5" y1="521.4688" y2="521.4688"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="235" x="452.5" y="516.6387">12. {'state': 'sale', 'date_order': now}</text><polygon fill="#A80036" points="1374,545.4375,1384,549.4375,1374,553.4375,1378,549.4375" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="435.5" x2="1380" y1="549.4375" y2="549.4375"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="346" x="442.5" y="544.6074">13. UPDATE sale.order SET state='sale', date_order=...</text><polygon fill="#A80036" points="446.5,573.4063,436.5,577.4063,446.5,581.4063,442.5,577.4063" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="1385" y1="577.4063" y2="577.4063"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="40" x="452.5" y="572.5762">14. OK</text><polygon fill="#A80036" points="1047,601.375,1057,605.375,1047,609.375,1051,605.375" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="435.5" x2="1053" y1="605.375" y2="605.375"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="131" x="442.5" y="600.5449">15. _action_confirm()</text><polygon fill="#A80036" points="1374,629.3438,1384,633.3438,1374,637.3438,1378,633.3438" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1069" x2="1380" y1="633.3438" y2="633.3438"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="232" x="1076" y="628.5137">16. INSERT stock.picking, stock.move</text><polygon fill="#A80036" points="1080,657.3125,1070,661.3125,1080,665.3125,1076,661.3125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1074" x2="1385" y1="661.3125" y2="661.3125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="40" x="1086" y="656.4824">17. OK</text><polygon fill="#A80036" points="446.5,685.2813,436.5,689.2813,446.5,693.2813,442.5,689.2813" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="1063" y1="689.2813" y2="689.2813"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="130" x="452.5" y="684.4512">18. pickings creados</text><path d="M363,704.2813 L432,704.2813 L432,709.2813 L422,719.2813 L363,719.2813 L363,704.2813 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="127.8438" style="stroke:#000000;stroke-width:2.0;" width="1072" x="363" y="704.2813"/><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="24" x="378" y="716.4199">opt</text><text fill="#000000" font-family="Arial" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="205" x="447" y="717.4199">[Si auto-factura configurada]</text><polygon fill="#A80036" points="1181,736.2188,1191,740.2188,1181,744.2188,1185,740.2188" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="435.5" x2="1187" y1="740.2188" y2="740.2188"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="137" x="442.5" y="735.3887">19. _create_invoices()</text><polygon fill="#A80036" points="1374,764.1875,1384,768.1875,1374,772.1875,1378,768.1875" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1203" x2="1380" y1="768.1875" y2="768.1875"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="159" x="1210" y="763.3574">20. INSERT account.move</text><polygon fill="#A80036" points="1214,792.1563,1204,796.1563,1214,800.1563,1210,796.1563" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1208" x2="1385" y1="796.1563" y2="796.1563"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="40" x="1220" y="791.3262">21. OK</text><polygon fill="#A80036" points="446.5,820.125,436.5,824.125,446.5,828.125,442.5,824.125" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="440.5" x2="1197" y1="824.125" y2="824.125"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="117" x="452.5" y="819.2949">22. factura creada</text><polygon fill="#A80036" points="293.5,855.0938,283.5,859.0938,293.5,863.0938,289.5,859.0938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="287.5" x2="429.5" y1="859.0938" y2="859.0938"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="95" x="299.5" y="854.2637">23. return True</text><polygon fill="#A80036" points="64.5,883.0625,54.5,887.0625,64.5,891.0625,60.5,887.0625" 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="276.5" y1="887.0625" y2="887.0625"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="195" x="70.5" y="882.2324">24. Estado actualizado a "sale"</text><rect fill="#DDDDDD" height="65.875" rx="5" ry="5" style="stroke:#000000;stroke-width:1.0;" width="264" x="1172" y="990.0313"/><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="144" x="1178" y="1006.1699">Proyecto: SAP-TFI-2026</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="120" x="1178" y="1020.1387">Agente: saptfi2026</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="124" x="1178" y="1034.1074">Metodología: ICONIX</text><text fill="#000000" font-family="Arial" font-size="12" lengthAdjust="spacing" textLength="252" x="1178" y="1048.0762">Fuente: Ingeniería inversa de Odoo 19.0</text><!--MD5=[5d90d2513aba12e5c59d3a60263ec97e]
|
|
@startuml D-SEC-VEN-004 — Diagrama de Secuencia: Confirmar Pedido
|
|
|
|
title SAP-TFI-2026 — Diagrama de Secuencia - Confirmar Pedido de Venta (CU-VEN-004)
|
|
|
|
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\n(action_confirm)" as SO
|
|
participant "Validator\n(_confirmation_error_message)" as Val
|
|
participant "Conf. Values\n(_prepare_confirmation_values)" as CV
|
|
participant "Stock Layer\n(_action_confirm)" as Stock
|
|
participant "Invoice Layer\n(_create_invoices)" as Inv
|
|
database "PostgreSQL" as DB
|
|
|
|
V -> Form : 1. Click "Confirmar"
|
|
activate Form
|
|
|
|
Form -> SO : 2. action_confirm()
|
|
activate SO
|
|
|
|
SO -> Val : 3. _confirmation_error_message()
|
|
activate Val
|
|
Val -> DB : 4. SELECT state, lines
|
|
DB - -> Val : 5. estado + líneas
|
|
alt Si estado OK y líneas OK
|
|
Val - -> SO : 6a. error_msg = None (OK)
|
|
else Si error
|
|
Val - -> SO : 6b. error_msg (UserError)
|
|
SO - -> Form : 7b. raise UserError
|
|
Form - -> V : 8b. Muestra error
|
|
end
|
|
deactivate Val
|
|
|
|
SO -> DB : 9. SELECT order_line for analytic validation
|
|
DB - -> SO : 10. líneas
|
|
|
|
SO -> CV : 11. _prepare_confirmation_values()
|
|
activate CV
|
|
CV - -> SO : 12. {'state': 'sale', 'date_order': now}
|
|
deactivate CV
|
|
|
|
SO -> DB : 13. UPDATE sale.order SET state='sale', date_order=...
|
|
DB - -> SO : 14. OK
|
|
|
|
SO -> Stock : 15. _action_confirm()
|
|
activate Stock
|
|
Stock -> DB : 16. INSERT stock.picking, stock.move
|
|
DB - -> Stock : 17. OK
|
|
Stock - -> SO : 18. pickings creados
|
|
deactivate Stock
|
|
|
|
opt Si auto-factura configurada
|
|
SO -> Inv : 19. _create_invoices()
|
|
activate Inv
|
|
Inv -> DB : 20. INSERT account.move
|
|
DB - -> Inv : 21. OK
|
|
Inv - -> SO : 22. factura creada
|
|
deactivate Inv
|
|
end
|
|
|
|
SO - -> Form : 23. return True
|
|
deactivate SO
|
|
|
|
Form - -> V : 24. Estado actualizado a "sale"
|
|
deactivate Form
|
|
|
|
legend right
|
|
Proyecto: SAP-TFI-2026
|
|
Agente: saptfi2026
|
|
Metodología: ICONIX
|
|
Fuente: Ingeniería 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> |