- Add "Mis cortes de caja" report for cashiers/counters with sales detail. - Cash register history scoped to own cuts for non-admin roles; new /register/<id>/sales endpoint. - Remove dashboard from cashier menu; add Reports to cashier/counter. - Service orders: assign mechanic, budget field, invoice flag, counter/cashier can add items/remissions, convert to remission. - Remission notes module (UI, CSS, courier, counter remissions). - Customer hard-delete and vehicle/customer linkage in workshop. - POS: always show search results, compact payment grid, credit validation, tier pricing (5%/10%), ticket with customer/folio. - Inventory: CSV template with sku_secondary, alias import. - Rached migration scripts and DB migrations. - Version-bump cached JS/CSS query strings. Excludes local Rached session tokens/captures (rached_*.json / rached_*.txt).
33 lines
2.5 KiB
SQL
33 lines
2.5 KiB
SQL
-- v4.18 Rached workshop fields
|
|
-- Extends service orders and items to match the Rached legacy workshop flow.
|
|
-- Applied to all tenants.
|
|
|
|
-- ═════════════════════════════════════════════════════════════════════════════
|
|
-- 1. SERVICE_ORDERS: capture free-text customer/vehicle/workshop data
|
|
-- ═════════════════════════════════════════════════════════════════════════════
|
|
ALTER TABLE service_orders
|
|
ADD COLUMN IF NOT EXISTS workshop_name VARCHAR(200),
|
|
ADD COLUMN IF NOT EXISTS customer_address TEXT,
|
|
ADD COLUMN IF NOT EXISTS customer_phone VARCHAR(50),
|
|
ADD COLUMN IF NOT EXISTS vehicle_description VARCHAR(300);
|
|
|
|
COMMENT ON COLUMN service_orders.workshop_name IS 'Free-text workshop/customer alias (Rached "Taller")';
|
|
COMMENT ON COLUMN service_orders.customer_address IS 'Address captured or imported for the service order';
|
|
COMMENT ON COLUMN service_orders.customer_phone IS 'Phone captured or imported for the service order';
|
|
COMMENT ON COLUMN service_orders.vehicle_description IS 'Free-text vehicle description (alternative to fleet_vehicles)';
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_service_orders_workshop_name ON service_orders(workshop_name);
|
|
CREATE INDEX IF NOT EXISTS idx_service_orders_vehicle_description ON service_orders(vehicle_description);
|
|
|
|
-- ═════════════════════════════════════════════════════════════════════════════
|
|
-- 2. SERVICE_ORDER_ITEMS: mechanic per item + explicit observations
|
|
-- ═════════════════════════════════════════════════════════════════════════════
|
|
ALTER TABLE service_order_items
|
|
ADD COLUMN IF NOT EXISTS mechanic_id INTEGER REFERENCES employees(id),
|
|
ADD COLUMN IF NOT EXISTS observations TEXT;
|
|
|
|
COMMENT ON COLUMN service_order_items.mechanic_id IS 'Mechanic assigned to this specific line item';
|
|
COMMENT ON COLUMN service_order_items.observations IS 'Line-item observations (Rached detail notes)';
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_service_order_items_mechanic_id ON service_order_items(mechanic_id);
|