# amandalucille/tpfinalobjetos2 architecture

> Architecture diagram of the GitHub repository amandalucille/tpfinalobjetos2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/amandalucille/tpfinalobjetos2
- Repository: https://github.com/amandalucille/tpfinalobjetos2

## Overview

This is a Java e-commerce domain model covering catalog search, order lifecycle, payment, shipping, delivery notifications, invoicing, and sales reports. The tree identifies the main subsystems, but the README is empty and core orchestration sources such as ECommerce and Pedido were not sampled, so their wiring is left unspecified. Edges show only calls and data access supported by sampled code.

Main entry points: [`src/eCommerce/suscriptores/GeneradorDeFactura.java`](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/suscriptores/GeneradorDeFactura.java) (Invoice Generator), [`src/eCommerce/Pedido.java`](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/Pedido.java) (Pedido), [`src/eCommerce/metodoDePago/PagoConTarjeta.java`](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/metodoDePago/PagoConTarjeta.java) (Card Payment), [`src/eCommerce/comprobantes/Factura.java`](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/Factura.java) (Invoice)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Catalog &amp; Search"]
  node_catalogo["Catalog Items<br/>[ItemCatalogo.java]"]
  node_producto["Product<br/>[Producto.java]"]
  node_paquete["Product Bundle<br/>[Paquete.java]"]
  node_busqueda["Search Criteria"]
  node_filtros["Search Filters"]
  node_compuertas["Filter Logic<br/>[CriterioAnd.java]"]
end

subgraph group_orders["Orders &amp; Fulfillment"]
  node_ecommerce["ECommerce<br/>[ECommerce.java]"]
  node_pedido["Pedido<br/>[Pedido.java]"]
  node_cliente["Customer Data<br/>[DatosCliente.java]"]
  node_estados["Order States<br/>[Estado.java]"]
  node_estado_borrador["Draft State"]
  node_estado_entrega["Delivery States"]
  node_envio["Shipping Methods<br/>[MetodoDeEnvio.java]"]
  node_envio_estandar["Standard Adapter"]
  node_envio_express["Express Adapter"]
  node_retiro["Store Pickup"]
end

subgraph group_money["Payments &amp; Documents"]
  node_pago["Payment Methods<br/>[MetodoDePago.java]"]
  node_pago_tarjeta["Card Payment"]
  node_comprobantes["Payment Receipts<br/>[Comprobante.java]"]
  node_factura["Invoice<br/>[Factura.java]"]
  node_detalle_factura["Invoice Lines"]
end

subgraph group_insights["Notifications &amp; Reports"]
  node_observadores["Order Observers"]
  node_factura_generador[("Invoice Generator")]
  node_reporte_visitor["Report Visitor"]
  node_reporte_html["HTML Report<br/>[ReporteHTML.java]"]
  node_resumen["Sales Summary"]
end

node_customer(("Customer"))
node_api_tarjeta["Card API"]
node_api_correo["Postal Service API"]
node_api_express["Express Service API<br/>[EnvioExpress.java]"]

node_customer -->|"uses"| node_ecommerce
node_producto -->|"accepts visitor"| node_reporte_visitor
node_reporte_html -->|"reads summary"| node_resumen
node_reporte_html -->|"implements"| node_reporte_visitor
node_compuertas -->|"evaluates criteria"| node_busqueda
node_filtros -->|"checks item"| node_catalogo
node_pago_tarjeta -->|"validates and charges"| node_api_tarjeta
node_pago_tarjeta -->|"reads amount"| node_pedido
node_pago_tarjeta -->|"creates receipt"| node_comprobantes
node_envio_estandar -->|"reads weight and address"| node_pedido
node_envio_estandar -->|"estimates shipping"| node_api_correo
node_factura_generador -->|"receives delivery event"| node_pedido
node_factura_generador -->|"creates invoice"| node_factura
node_factura_generador -->|"stores invoices"| node_factura_generador
node_factura -->|"reads items and shipping"| node_pedido
node_factura -->|"creates line items"| node_detalle_factura

click node_ecommerce "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/ECommerce.java"
click node_pedido "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/Pedido.java"
click node_cliente "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/DatosCliente.java"
click node_estados "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/estados/Estado.java"
click node_estado_borrador "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/estados/EstadoBorrador.java"
click node_estado_entrega "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/estados/EstadoEntregado.java"
click node_envio "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/MetodoDeEnvio.java"
click node_envio_estandar "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/EnvioEstandarAdapter.java"
click node_envio_express "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/EnvioExpressAdapter.java"
click node_retiro "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/RetiroEnSucursal.java"
click node_catalogo "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/item/ItemCatalogo.java"
click node_producto "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/item/Producto.java"
click node_paquete "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/item/Paquete.java"
click node_busqueda "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/filtro/CriterioDeBusqueda.java"
click node_filtros "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/filtro/FiltroPorNombre.java"
click node_compuertas "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/filtro/compuertasLogicas/CriterioAnd.java"
click node_pago "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/metodoDePago/MetodoDePago.java"
click node_pago_tarjeta "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/metodoDePago/PagoConTarjeta.java"
click node_api_tarjeta "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/libreriasExternas/ApiTarjetaDeCredito.java"
click node_comprobantes "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/Comprobante.java"
click node_factura "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/Factura.java"
click node_detalle_factura "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/DetalleFacturableItem.java"
click node_observadores "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/suscriptores/PedidoObserver.java"
click node_factura_generador "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/suscriptores/GeneradorDeFactura.java"
click node_reporte_visitor "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/visitor/ReporteVisitor.java"
click node_reporte_html "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/visitor/ReporteHTML.java"
click node_resumen "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/ResumenVentaItem.java"
click node_api_correo "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/libreriasExternas/CorreoArgentina.java"
click node_api_express "https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/libreriasExternas/EnvioExpress.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_catalogo,node_producto,node_paquete,node_busqueda,node_filtros,node_compuertas toneBlue
class node_ecommerce,node_pedido,node_cliente,node_estados,node_estado_borrador,node_estado_entrega,node_envio,node_envio_estandar,node_envio_express,node_retiro toneAmber
class node_pago,node_pago_tarjeta,node_comprobantes,node_factura,node_detalle_factura,node_api_tarjeta,node_api_correo,node_api_express toneMint
class node_observadores,node_factura_generador,node_reporte_visitor,node_reporte_html,node_resumen toneRose
class node_customer toneIndigo
```

## Components

### Catalog & Search

- [Catalog Items](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/item/ItemCatalogo.java): `src/eCommerce/item/ItemCatalogo.java`
- [Product](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/item/Producto.java): `src/eCommerce/item/Producto.java`
- [Product Bundle](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/item/Paquete.java): `src/eCommerce/item/Paquete.java`
- [Search Criteria](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/filtro/CriterioDeBusqueda.java): `src/eCommerce/filtro/CriterioDeBusqueda.java`
- [Search Filters](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/filtro/FiltroPorNombre.java): `src/eCommerce/filtro/FiltroPorNombre.java`
- [Filter Logic](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/filtro/compuertasLogicas/CriterioAnd.java): `src/eCommerce/filtro/compuertasLogicas/CriterioAnd.java`

### Orders & Fulfillment

- [ECommerce](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/ECommerce.java): `src/eCommerce/ECommerce.java`
- [Pedido](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/Pedido.java): `src/eCommerce/Pedido.java`
- [Customer Data](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/DatosCliente.java): `src/eCommerce/DatosCliente.java`
- [Order States](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/estados/Estado.java): `src/eCommerce/estados/Estado.java`
- [Draft State](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/estados/EstadoBorrador.java): `src/eCommerce/estados/EstadoBorrador.java`
- [Delivery States](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/estados/EstadoEntregado.java): `src/eCommerce/estados/EstadoEntregado.java`
- [Shipping Methods](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/MetodoDeEnvio.java): `src/eCommerce/envios/MetodoDeEnvio.java`
- [Standard Adapter](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/EnvioEstandarAdapter.java): `src/eCommerce/envios/EnvioEstandarAdapter.java`
- [Express Adapter](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/EnvioExpressAdapter.java): `src/eCommerce/envios/EnvioExpressAdapter.java`
- [Store Pickup](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/envios/RetiroEnSucursal.java): `src/eCommerce/envios/RetiroEnSucursal.java`

### Payments & Documents

- [Payment Methods](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/metodoDePago/MetodoDePago.java): `src/eCommerce/metodoDePago/MetodoDePago.java`
- [Card Payment](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/metodoDePago/PagoConTarjeta.java): `src/eCommerce/metodoDePago/PagoConTarjeta.java`
- [Payment Receipts](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/Comprobante.java): `src/eCommerce/comprobantes/Comprobante.java`
- [Invoice](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/Factura.java): `src/eCommerce/comprobantes/Factura.java`
- [Invoice Lines](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/comprobantes/DetalleFacturableItem.java): `src/eCommerce/comprobantes/DetalleFacturableItem.java`

### Notifications & Reports

- [Order Observers](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/suscriptores/PedidoObserver.java): `src/eCommerce/suscriptores/PedidoObserver.java`
- [Invoice Generator](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/suscriptores/GeneradorDeFactura.java): `src/eCommerce/suscriptores/GeneradorDeFactura.java`
- [Report Visitor](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/visitor/ReporteVisitor.java): `src/eCommerce/visitor/ReporteVisitor.java`
- [HTML Report](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/visitor/ReporteHTML.java): `src/eCommerce/visitor/ReporteHTML.java`
- [Sales Summary](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/ResumenVentaItem.java): `src/eCommerce/ResumenVentaItem.java`

### Other components

- **Customer**
- [Card API](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/libreriasExternas/ApiTarjetaDeCredito.java): `src/eCommerce/libreriasExternas/ApiTarjetaDeCredito.java`
- [Postal Service API](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/libreriasExternas/CorreoArgentina.java): `src/eCommerce/libreriasExternas/CorreoArgentina.java`
- [Express Service API](https://github.com/amandalucille/tpfinalobjetos2/blob/main/src/eCommerce/libreriasExternas/EnvioExpress.java): `src/eCommerce/libreriasExternas/EnvioExpress.java`

## Connections

- Customer → ECommerce: uses
- Product → Report Visitor: accepts visitor
- HTML Report → Sales Summary: reads summary
- HTML Report → Report Visitor: implements
- Filter Logic → Search Criteria: evaluates criteria
- Search Filters → Catalog Items: checks item
- Card Payment → Card API: validates and charges
- Card Payment → Pedido: reads amount
- Card Payment → Payment Receipts: creates receipt
- Standard Adapter → Pedido: reads weight and address
- Standard Adapter → Postal Service API: estimates shipping
- Invoice Generator → Pedido: receives delivery event
- Invoice Generator → Invoice: creates invoice
- Invoice Generator → Invoice Generator: stores invoices
- Invoice → Pedido: reads items and shipping
- Invoice → Invoice Lines: creates line items
