- New clients table with PF/PJ support, fiscal data (CUI, IBAN, eFactura fields) - Full CRUD API for clients with search, sync integration - Order lifecycle: edit header (DRAFT), devalidate (VALIDAT→DRAFT), delete order/invoice - Invoice types: FACTURA (B2B) vs BON_FISCAL (B2C) with different nr formats - OrderCreateView redesigned as multi-step flow (client→vehicle→details) - Autocomplete from catalog_norme/catalog_preturi in OrderLineForm - Dashboard now combines stats + full orders table with filter tabs and search - ClientPicker and VehiclePicker with inline creation capability - Frontend schema aligned with backend (missing columns causing sync errors) - Mobile responsive fixes for OrderDetailView buttons Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
27 lines
1.4 KiB
Python
27 lines
1.4 KiB
Python
from sqlalchemy import Integer, String, Text
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.db.base import Base, UUIDMixin, TenantMixin, TimestampMixin
|
|
|
|
|
|
class Vehicle(Base, UUIDMixin, TenantMixin, TimestampMixin):
|
|
__tablename__ = "vehicles"
|
|
nr_inmatriculare: Mapped[str] = mapped_column(String(20))
|
|
client_id: Mapped[str | None] = mapped_column(String(36))
|
|
marca_id: Mapped[str | None] = mapped_column(String(36))
|
|
model_id: Mapped[str | None] = mapped_column(String(36))
|
|
an_fabricatie: Mapped[int | None] = mapped_column(Integer)
|
|
# VIN / serie sasiu (vin kept for REST API compat, serie_sasiu for frontend sync)
|
|
vin: Mapped[str | None] = mapped_column(String(17))
|
|
serie_sasiu: Mapped[str | None] = mapped_column(String(50))
|
|
tip_motor_id: Mapped[str | None] = mapped_column(String(36))
|
|
capacitate_motor: Mapped[str | None] = mapped_column(String(20))
|
|
putere_kw: Mapped[str | None] = mapped_column(String(20))
|
|
client_nume: Mapped[str | None] = mapped_column(String(200))
|
|
client_telefon: Mapped[str | None] = mapped_column(String(20))
|
|
client_email: Mapped[str | None] = mapped_column(String(200))
|
|
# client_cod_fiscal used by frontend; client_cui kept for REST API compat
|
|
client_cod_fiscal: Mapped[str | None] = mapped_column(String(20))
|
|
client_cui: Mapped[str | None] = mapped_column(String(20))
|
|
client_adresa: Mapped[str | None] = mapped_column(Text)
|