@fayz-ai/pos 0.20.5 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/config.d.ts +216 -4
- package/dist/app/config.d.ts.map +1 -1
- package/dist/index.d.ts +101 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10857 -2517
- package/dist/index.js.map +1 -1
- package/dist/lib/useFloorBell.d.ts +21 -0
- package/dist/lib/useFloorBell.d.ts.map +1 -0
- package/dist/screen/AreaInspector.d.ts +19 -0
- package/dist/screen/AreaInspector.d.ts.map +1 -0
- package/dist/screen/AreaOutlineSheet.d.ts +15 -0
- package/dist/screen/AreaOutlineSheet.d.ts.map +1 -0
- package/dist/screen/ArrangeSheet.d.ts +8 -0
- package/dist/screen/ArrangeSheet.d.ts.map +1 -0
- package/dist/screen/AuthorizeSheet.d.ts +73 -0
- package/dist/screen/AuthorizeSheet.d.ts.map +1 -0
- package/dist/screen/CancelSheet.d.ts +35 -0
- package/dist/screen/CancelSheet.d.ts.map +1 -0
- package/dist/screen/ClosedPanel.d.ts +55 -0
- package/dist/screen/ClosedPanel.d.ts.map +1 -0
- package/dist/screen/ConfirmSheet.d.ts +12 -0
- package/dist/screen/ConfirmSheet.d.ts.map +1 -0
- package/dist/screen/CourtesySheet.d.ts +23 -0
- package/dist/screen/CourtesySheet.d.ts.map +1 -0
- package/dist/screen/CoverChargeSheet.d.ts +16 -0
- package/dist/screen/CoverChargeSheet.d.ts.map +1 -0
- package/dist/screen/DeliveryBoard.d.ts +13 -0
- package/dist/screen/DeliveryBoard.d.ts.map +1 -1
- package/dist/screen/DiscountSheet.d.ts +85 -0
- package/dist/screen/DiscountSheet.d.ts.map +1 -0
- package/dist/screen/DispatchRail.d.ts.map +1 -1
- package/dist/screen/FloorScopeBanner.d.ts +11 -0
- package/dist/screen/FloorScopeBanner.d.ts.map +1 -0
- package/dist/screen/GuestBar.d.ts +51 -0
- package/dist/screen/GuestBar.d.ts.map +1 -0
- package/dist/screen/GuestCountSheet.d.ts +16 -0
- package/dist/screen/GuestCountSheet.d.ts.map +1 -0
- package/dist/screen/IdentitySheet.d.ts.map +1 -1
- package/dist/screen/ModifierSheet.d.ts.map +1 -1
- package/dist/screen/OpenTableSheet.d.ts.map +1 -1
- package/dist/screen/PinSheet.d.ts.map +1 -1
- package/dist/screen/PlanStage.d.ts +130 -0
- package/dist/screen/PlanStage.d.ts.map +1 -0
- package/dist/screen/PosScreen.d.ts +350 -3
- package/dist/screen/PosScreen.d.ts.map +1 -1
- package/dist/screen/ServiceChargeSheet.d.ts +98 -0
- package/dist/screen/ServiceChargeSheet.d.ts.map +1 -0
- package/dist/screen/SheetLayer.d.ts +8 -0
- package/dist/screen/SheetLayer.d.ts.map +1 -0
- package/dist/screen/ShiftPanel.d.ts +45 -0
- package/dist/screen/ShiftPanel.d.ts.map +1 -0
- package/dist/screen/ShortcutsOverlay.d.ts.map +1 -1
- package/dist/screen/SplitSheet.d.ts.map +1 -1
- package/dist/screen/TableInspector.d.ts +22 -0
- package/dist/screen/TableInspector.d.ts.map +1 -0
- package/dist/screen/TicketRail.d.ts +175 -2
- package/dist/screen/TicketRail.d.ts.map +1 -1
- package/dist/screen/TransferHistorySheet.d.ts +17 -0
- package/dist/screen/TransferHistorySheet.d.ts.map +1 -0
- package/dist/screen/TransferSheet.d.ts +65 -0
- package/dist/screen/TransferSheet.d.ts.map +1 -0
- package/dist/screen/UnassignedTables.d.ts +14 -0
- package/dist/screen/UnassignedTables.d.ts.map +1 -0
- package/dist/screen/WaitlistEntrySheet.d.ts +23 -0
- package/dist/screen/WaitlistEntrySheet.d.ts.map +1 -0
- package/dist/screen/WaitlistView.d.ts +41 -0
- package/dist/screen/WaitlistView.d.ts.map +1 -0
- package/dist/screen/ZoneDrawLayer.d.ts +11 -0
- package/dist/screen/ZoneDrawLayer.d.ts.map +1 -0
- package/dist/screen/ZoneHandles.d.ts +18 -0
- package/dist/screen/ZoneHandles.d.ts.map +1 -0
- package/dist/screen/ZoneInspector.d.ts +27 -0
- package/dist/screen/ZoneInspector.d.ts.map +1 -0
- package/dist/screen/accountFit.d.ts +17 -0
- package/dist/screen/accountFit.d.ts.map +1 -0
- package/dist/screen/accountPick.d.ts +16 -0
- package/dist/screen/accountPick.d.ts.map +1 -0
- package/dist/screen/areaOutline.d.ts +59 -0
- package/dist/screen/areaOutline.d.ts.map +1 -0
- package/dist/screen/arrangePlan.d.ts +109 -0
- package/dist/screen/arrangePlan.d.ts.map +1 -0
- package/dist/screen/arrangeTables.d.ts +69 -0
- package/dist/screen/arrangeTables.d.ts.map +1 -0
- package/dist/screen/billPrint.d.ts +66 -0
- package/dist/screen/billPrint.d.ts.map +1 -0
- package/dist/screen/cancelCheck.d.ts +31 -0
- package/dist/screen/cancelCheck.d.ts.map +1 -0
- package/dist/screen/cardBrand.d.ts +44 -0
- package/dist/screen/cardBrand.d.ts.map +1 -0
- package/dist/screen/cashGate.d.ts +31 -0
- package/dist/screen/cashGate.d.ts.map +1 -0
- package/dist/screen/catalogEmpty.d.ts +13 -0
- package/dist/screen/catalogEmpty.d.ts.map +1 -0
- package/dist/screen/categoryIcon.d.ts +4 -0
- package/dist/screen/categoryIcon.d.ts.map +1 -0
- package/dist/screen/channelSlot.d.ts +93 -0
- package/dist/screen/channelSlot.d.ts.map +1 -0
- package/dist/screen/comandaChannel.d.ts +49 -0
- package/dist/screen/comandaChannel.d.ts.map +1 -0
- package/dist/screen/courtesyGate.d.ts +31 -0
- package/dist/screen/courtesyGate.d.ts.map +1 -0
- package/dist/screen/coverQuantities.d.ts +46 -0
- package/dist/screen/coverQuantities.d.ts.map +1 -0
- package/dist/screen/deliveryColumns.d.ts +54 -0
- package/dist/screen/deliveryColumns.d.ts.map +1 -0
- package/dist/screen/discardCheck.d.ts +8 -0
- package/dist/screen/discardCheck.d.ts.map +1 -0
- package/dist/screen/discountBook.d.ts +40 -0
- package/dist/screen/discountBook.d.ts.map +1 -0
- package/dist/screen/discountCap.d.ts +9 -0
- package/dist/screen/discountCap.d.ts.map +1 -0
- package/dist/screen/discountSelectable.d.ts +20 -0
- package/dist/screen/discountSelectable.d.ts.map +1 -0
- package/dist/screen/dockScope.d.ts +9 -0
- package/dist/screen/dockScope.d.ts.map +1 -0
- package/dist/screen/fiscalSeal.d.ts +40 -0
- package/dist/screen/fiscalSeal.d.ts.map +1 -0
- package/dist/screen/floorEmpty.d.ts +20 -0
- package/dist/screen/floorEmpty.d.ts.map +1 -0
- package/dist/screen/floorGeometry.d.ts +295 -0
- package/dist/screen/floorGeometry.d.ts.map +1 -0
- package/dist/screen/floorScope.d.ts +49 -0
- package/dist/screen/floorScope.d.ts.map +1 -0
- package/dist/screen/floorStale.d.ts +5 -0
- package/dist/screen/floorStale.d.ts.map +1 -0
- package/dist/screen/guestCount.d.ts +28 -0
- package/dist/screen/guestCount.d.ts.map +1 -0
- package/dist/screen/guestCountOnClose.d.ts +11 -0
- package/dist/screen/guestCountOnClose.d.ts.map +1 -0
- package/dist/screen/ledgerMethod.d.ts +11 -0
- package/dist/screen/ledgerMethod.d.ts.map +1 -0
- package/dist/screen/menuFreshness.d.ts +18 -0
- package/dist/screen/menuFreshness.d.ts.map +1 -0
- package/dist/screen/menuSearch.d.ts +55 -0
- package/dist/screen/menuSearch.d.ts.map +1 -0
- package/dist/screen/modifierCheck.d.ts +23 -0
- package/dist/screen/modifierCheck.d.ts.map +1 -0
- package/dist/screen/openChannelCounts.d.ts +26 -0
- package/dist/screen/openChannelCounts.d.ts.map +1 -0
- package/dist/screen/orderRef.d.ts +17 -0
- package/dist/screen/orderRef.d.ts.map +1 -0
- package/dist/screen/paymentList.d.ts +26 -0
- package/dist/screen/paymentList.d.ts.map +1 -0
- package/dist/screen/pinGate.d.ts +28 -0
- package/dist/screen/pinGate.d.ts.map +1 -0
- package/dist/screen/reopen.d.ts +36 -0
- package/dist/screen/reopen.d.ts.map +1 -0
- package/dist/screen/searchSubject.d.ts +22 -0
- package/dist/screen/searchSubject.d.ts.map +1 -0
- package/dist/screen/serviceChargeCheck.d.ts +29 -0
- package/dist/screen/serviceChargeCheck.d.ts.map +1 -0
- package/dist/screen/serviceChargeGuard.d.ts +145 -0
- package/dist/screen/serviceChargeGuard.d.ts.map +1 -0
- package/dist/screen/servicePreview.d.ts +35 -0
- package/dist/screen/servicePreview.d.ts.map +1 -0
- package/dist/screen/session.d.ts +207 -0
- package/dist/screen/session.d.ts.map +1 -1
- package/dist/screen/sheetSubtitle.d.ts +8 -0
- package/dist/screen/sheetSubtitle.d.ts.map +1 -0
- package/dist/screen/shift.d.ts +97 -0
- package/dist/screen/shift.d.ts.map +1 -0
- package/dist/screen/specialReuse.d.ts +45 -0
- package/dist/screen/specialReuse.d.ts.map +1 -0
- package/dist/screen/svgDrag.d.ts +24 -0
- package/dist/screen/svgDrag.d.ts.map +1 -0
- package/dist/screen/tableTone.d.ts +64 -0
- package/dist/screen/tableTone.d.ts.map +1 -0
- package/dist/screen/transferDone.d.ts +12 -0
- package/dist/screen/transferDone.d.ts.map +1 -0
- package/dist/screen/transferGuestBlock.d.ts +30 -0
- package/dist/screen/transferGuestBlock.d.ts.map +1 -0
- package/dist/screen/transferPick.d.ts +51 -0
- package/dist/screen/transferPick.d.ts.map +1 -0
- package/dist/screen/views.d.ts +139 -4
- package/dist/screen/views.d.ts.map +1 -1
- package/dist/screen/waitlist.d.ts +211 -0
- package/dist/screen/waitlist.d.ts.map +1 -0
- package/dist/screen/writeFailure.d.ts +22 -0
- package/dist/screen/writeFailure.d.ts.map +1 -0
- package/dist/screen/zoneDraft.d.ts +75 -0
- package/dist/screen/zoneDraft.d.ts.map +1 -0
- package/dist/screen/zoneEditing.d.ts +56 -0
- package/dist/screen/zoneEditing.d.ts.map +1 -0
- package/dist/styles.css +2697 -200
- package/package.json +2 -2
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type Point } from './floorGeometry';
|
|
2
|
+
/** O V1 fecha o polígono a 15px de um canvas de 40px/m. */
|
|
3
|
+
export declare const CLOSE_RADIUS_M: number;
|
|
4
|
+
export type AreaShape = 'rectangle' | 'polygon';
|
|
5
|
+
export interface OutlineDraft {
|
|
6
|
+
name: string;
|
|
7
|
+
color: string;
|
|
8
|
+
shape: AreaShape;
|
|
9
|
+
widthM: number;
|
|
10
|
+
heightM: number;
|
|
11
|
+
polygon: Point[];
|
|
12
|
+
closed: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* O clique no canvas: acrescenta um ponto, ou FECHA o contorno.
|
|
16
|
+
*
|
|
17
|
+
* Fecha só com três pontos já postos — dois pontos e uma volta não cercam
|
|
18
|
+
* nada — e só se o toque cair perto do primeiro. Devolve o rascunho novo, ou
|
|
19
|
+
* o mesmo objeto quando o clique não muda nada (contorno já fechado).
|
|
20
|
+
*/
|
|
21
|
+
export declare function addOutlinePoint(polygon: Point[], closed: boolean, p: Point, closeRadiusM?: number): {
|
|
22
|
+
polygon: Point[];
|
|
23
|
+
closed: boolean;
|
|
24
|
+
};
|
|
25
|
+
/** Desfaz o último ponto. Desfazer também REABRE um contorno fechado. */
|
|
26
|
+
export declare function undoOutlinePoint(polygon: Point[], closed: boolean): {
|
|
27
|
+
polygon: Point[];
|
|
28
|
+
closed: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* O que impede de salvar — com as palavras do V1.
|
|
32
|
+
*
|
|
33
|
+
* `null` quando pode salvar.
|
|
34
|
+
*/
|
|
35
|
+
export declare function outlineRefusal(d: Pick<OutlineDraft, 'name' | 'shape' | 'polygon'>): string | null;
|
|
36
|
+
export interface OutlinePatch {
|
|
37
|
+
name: string;
|
|
38
|
+
color: string;
|
|
39
|
+
shape: AreaShape;
|
|
40
|
+
widthM: number;
|
|
41
|
+
heightM: number;
|
|
42
|
+
polygon: Point[] | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* O patch — SÓ o que este diálogo edita.
|
|
46
|
+
*
|
|
47
|
+
* Duas coisas, e as duas vêm de erro real no V1:
|
|
48
|
+
*
|
|
49
|
+
* 1. **O polígono vira `null` quando a forma volta a retângulo.** Guardá-lo
|
|
50
|
+
* "por via das dúvidas" deixa um contorno velho que a próxima leitura
|
|
51
|
+
* pode preferir à largura e ao comprimento.
|
|
52
|
+
*
|
|
53
|
+
* 2. **`tenant_id` e `unit_id` NÃO entram.** O comentário do V1 é literal:
|
|
54
|
+
* *"editar um ambiente com outra unidade selecionada no topo da tela o
|
|
55
|
+
* carregava para essa unidade, com todas as mesas dentro."* Um campo a
|
|
56
|
+
* mais no update mudou o dono de um salão inteiro.
|
|
57
|
+
*/
|
|
58
|
+
export declare function outlinePatch(d: OutlineDraft): OutlinePatch;
|
|
59
|
+
//# sourceMappingURL=areaOutline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areaOutline.d.ts","sourceRoot":"","sources":["../../src/screen/areaOutline.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEzD,2DAA2D;AAC3D,eAAO,MAAM,cAAc,QAAU,CAAA;AAErC,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,EAAE,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,SAAiB,GACzE;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CASvC;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,GAChC;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAGvC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAKjG;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAS1D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type MeasuredTable } from './arrangeTables';
|
|
2
|
+
import type { Point } from './floorGeometry';
|
|
3
|
+
/** Um ambiente, do ponto de vista do plano. */
|
|
4
|
+
export interface PlanArea {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
shape?: string | null;
|
|
8
|
+
widthM?: number | null;
|
|
9
|
+
heightM?: number | null;
|
|
10
|
+
polygon?: Point[] | null;
|
|
11
|
+
}
|
|
12
|
+
/** Uma mesa, com o ambiente em que ela está HOJE. */
|
|
13
|
+
export interface PlanTable extends MeasuredTable {
|
|
14
|
+
id: string;
|
|
15
|
+
number?: number | null;
|
|
16
|
+
name?: string | null;
|
|
17
|
+
areaId?: string | null;
|
|
18
|
+
}
|
|
19
|
+
/** O rascunho: só as mesas que MUDARAM de ambiente (`null` = sai da planta). */
|
|
20
|
+
export type Draft = Map<string, string | null>;
|
|
21
|
+
/** Onde a mesa está, contando o rascunho. */
|
|
22
|
+
export declare function effectiveArea(t: PlanTable, draft: Draft): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Põe a mesa no ambiente ativo, ou tira de lá.
|
|
25
|
+
*
|
|
26
|
+
* Tirar tem dois sentidos, e o V1 os separa: a mesa que **era** deste ambiente
|
|
27
|
+
* sai da planta; a que só **veio** de outro no rascunho volta para onde
|
|
28
|
+
* estava. Tratar os dois como "sai da planta" mandaria para a bandeja uma mesa
|
|
29
|
+
* que o operador só tinha movido por engano.
|
|
30
|
+
*/
|
|
31
|
+
export declare function toggleTable(draft: Draft, t: PlanTable, activeArea: string): Draft;
|
|
32
|
+
/** Desmarcar um ambiente desfaz o que o rascunho tinha feito para ele. */
|
|
33
|
+
export declare function releaseArea(draft: Draft, tables: PlanTable[], areaId: string): Draft;
|
|
34
|
+
/** Tira TODAS as mesas do ambiente ativo, pela mesma regra do `toggleTable`. */
|
|
35
|
+
export declare function clearArea(draft: Draft, tables: PlanTable[], activeArea: string): Draft;
|
|
36
|
+
export interface AreaPreview {
|
|
37
|
+
area: PlanArea;
|
|
38
|
+
tables: PlanTable[];
|
|
39
|
+
cols: number;
|
|
40
|
+
rows: number;
|
|
41
|
+
fits: boolean;
|
|
42
|
+
neededWidthM: number;
|
|
43
|
+
neededHeightM: number;
|
|
44
|
+
positions: Map<string, Point>;
|
|
45
|
+
}
|
|
46
|
+
/** O que VAI acontecer com cada ambiente escolhido, antes de gravar nada. */
|
|
47
|
+
export declare function previewArrangement(areas: PlanArea[], tables: PlanTable[], draft: Draft, chosen: string[], gapM?: number): AreaPreview[];
|
|
48
|
+
export interface ArrangementPlan {
|
|
49
|
+
/**
|
|
50
|
+
* O que muda em cada ambiente: o TAMANHO, quando as mesas não couberam, e a
|
|
51
|
+
* POSIÇÃO, quando se pede «lado a lado».
|
|
52
|
+
*
|
|
53
|
+
* A posição faltava, e com ela faltava o caminho que o V1 chama de «Só pôr
|
|
54
|
+
* os ambientes lado a lado» — o único útil quando os ambientes ainda estão
|
|
55
|
+
* todos empilhados na origem, que é exatamente quando o cadeado do desenho
|
|
56
|
+
* de praça está ligado.
|
|
57
|
+
*/
|
|
58
|
+
areas: Array<{
|
|
59
|
+
id: string;
|
|
60
|
+
widthM?: number;
|
|
61
|
+
heightM?: number;
|
|
62
|
+
posX?: number;
|
|
63
|
+
posY?: number;
|
|
64
|
+
}>;
|
|
65
|
+
tables: Array<{
|
|
66
|
+
id: string;
|
|
67
|
+
areaId: string | null;
|
|
68
|
+
posX?: number;
|
|
69
|
+
posY?: number;
|
|
70
|
+
}>;
|
|
71
|
+
}
|
|
72
|
+
/** O plano final: o que gravar, e nada além disso. */
|
|
73
|
+
export declare function buildPlan(preview: AreaPreview[], draft: Draft, chosen: string[], { grow }?: {
|
|
74
|
+
grow?: boolean | undefined;
|
|
75
|
+
}): ArrangementPlan;
|
|
76
|
+
/**
|
|
77
|
+
* A frase da prévia, por ambiente — a que evita a surpresa.
|
|
78
|
+
*
|
|
79
|
+
* O V1 tem DUAS frases para o «não coube», e a diferença entre elas é o que
|
|
80
|
+
* vai acontecer de fato:
|
|
81
|
+
*
|
|
82
|
+
* - **o ambiente cresce** — retângulo, com «aumentar» ligado;
|
|
83
|
+
* - **«não cabem … vão passar da borda»** — polígono, ou «aumentar»
|
|
84
|
+
* desligado.
|
|
85
|
+
*
|
|
86
|
+
* O V2 dizia sempre a primeira. Mas o `buildPlan` recusa esticar polígono
|
|
87
|
+
* («esticar um contorno desenhado à mão não tem um "maior" óbvio»), então a
|
|
88
|
+
* prévia prometia um crescimento que não vinha: o operador lia «o ambiente
|
|
89
|
+
* passa a 29,0 × 15,5 m», confirmava, e as mesas passavam da borda sem aviso.
|
|
90
|
+
*
|
|
91
|
+
* A prévia existe para evitar exatamente essa surpresa; dizer a frase errada é
|
|
92
|
+
* pior do que não ter prévia.
|
|
93
|
+
*/
|
|
94
|
+
export declare function previewLine(p: AreaPreview, grow?: boolean): string;
|
|
95
|
+
/**
|
|
96
|
+
* O plano que SÓ espalha os ambientes, sem tocar em mesa.
|
|
97
|
+
*
|
|
98
|
+
* É o «Só pôr os ambientes lado a lado» do V1. Ele existe para o estado em que
|
|
99
|
+
* nada mais funciona: ambientes empilhados na origem, ferramentas de praça
|
|
100
|
+
* apagadas, e o operador sem um primeiro passo. O V1 o oferece como botão
|
|
101
|
+
* próprio; aqui ele é o que o botão faz quando nenhum ambiente foi escolhido.
|
|
102
|
+
*
|
|
103
|
+
* As mesas ficam onde estão — elas são posicionadas DENTRO do ambiente, e o
|
|
104
|
+
* ambiente é que se muda. É por isso que o V1 avisa «as praças não se movem»:
|
|
105
|
+
* a praça é um recorte em coordenadas do mundo, e espalhar ambientes a deixa
|
|
106
|
+
* para trás.
|
|
107
|
+
*/
|
|
108
|
+
export declare function spreadAreasPlan(areas: PlanArea[]): ArrangementPlan;
|
|
109
|
+
//# sourceMappingURL=arrangePlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrangePlan.d.ts","sourceRoot":"","sources":["../../src/screen/arrangePlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type Point, type TableShape } from './floorGeometry';
|
|
2
|
+
/** Até onde a cadeira passa da borda do tampo: 0,28 de afastamento + 0,14 de
|
|
3
|
+
* meia cadeira. */
|
|
4
|
+
export declare const CHAIR_M = 0.45;
|
|
5
|
+
/** Folga das bordas laterais e de baixo do ambiente. */
|
|
6
|
+
export declare const MARGIN_M = 0.4;
|
|
7
|
+
/** Folga de cima — o nome do ambiente mora no canto superior. */
|
|
8
|
+
export declare const MARGIN_TOP_M = 1.3;
|
|
9
|
+
/** Espaçamento mínimo padrão entre as mesas, já descontadas as cadeiras. */
|
|
10
|
+
export declare const DEFAULT_GAP_M = 0.6;
|
|
11
|
+
export interface MeasuredTable {
|
|
12
|
+
id: string;
|
|
13
|
+
shape?: TableShape | null;
|
|
14
|
+
widthM?: number | null;
|
|
15
|
+
heightM?: number | null;
|
|
16
|
+
diameterM?: number | null;
|
|
17
|
+
rotation?: number | null;
|
|
18
|
+
seats?: number | null;
|
|
19
|
+
}
|
|
20
|
+
export interface LabelledTable {
|
|
21
|
+
id: string;
|
|
22
|
+
number?: number | null;
|
|
23
|
+
name?: string | null;
|
|
24
|
+
}
|
|
25
|
+
/** O rótulo da mesa: o nome, se tiver; senão «Mesa N». */
|
|
26
|
+
export declare function tableLabel(m: LabelledTable): string;
|
|
27
|
+
/**
|
|
28
|
+
* Ordem «alfabética» de mesa é a do NÚMERO — 1, 2, … 10, e não 1, 10, 2.
|
|
29
|
+
* Empate pelo nome, com comparação numérica embutida.
|
|
30
|
+
*/
|
|
31
|
+
export declare function compareTables(a: LabelledTable, b: LabelledTable): number;
|
|
32
|
+
/** As mesas cujo número está entre `de` e `ate` (em qualquer ordem), inclusive. */
|
|
33
|
+
export declare function tablesInRange<T extends {
|
|
34
|
+
number?: number | null;
|
|
35
|
+
}>(tables: T[], de: number, ate: number): T[];
|
|
36
|
+
/** O retângulo que a mesa ocupa no CHÃO: o tampo girado, mais as cadeiras. */
|
|
37
|
+
export declare function tableFootprint(m: MeasuredTable): {
|
|
38
|
+
w: number;
|
|
39
|
+
h: number;
|
|
40
|
+
};
|
|
41
|
+
export interface Arrangement {
|
|
42
|
+
/** O centro de cada mesa, em coordenadas LOCAIS do ambiente (vai em pos_x/pos_y). */
|
|
43
|
+
positions: Map<string, Point>;
|
|
44
|
+
cols: number;
|
|
45
|
+
/** Linhas da grade; a última pode estar incompleta. */
|
|
46
|
+
rows: number;
|
|
47
|
+
/** Cabe no tamanho ATUAL do ambiente, com o espaçamento mínimo. */
|
|
48
|
+
fits: boolean;
|
|
49
|
+
/** O tamanho que o ambiente precisa ter para caber tudo. */
|
|
50
|
+
neededWidthM: number;
|
|
51
|
+
neededHeightM: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Distribui as mesas (JÁ na ordem desejada) numa grade que ocupa o ambiente
|
|
55
|
+
* inteiro.
|
|
56
|
+
*
|
|
57
|
+
* A célula é a pegada da MAIOR mesa, para as colunas ficarem alinhadas. Entre
|
|
58
|
+
* as grades que cabem, escolhe a de folgas mais parecidas na horizontal e na
|
|
59
|
+
* vertical; nenhuma cabendo, informa o tamanho que o ambiente precisa ter.
|
|
60
|
+
*/
|
|
61
|
+
export declare function arrangeInArea(tables: Array<MeasuredTable & {
|
|
62
|
+
id: string;
|
|
63
|
+
}>, area: {
|
|
64
|
+
shape?: string | null;
|
|
65
|
+
widthM?: number | null;
|
|
66
|
+
heightM?: number | null;
|
|
67
|
+
polygon?: Point[] | null;
|
|
68
|
+
}, gapM?: number): Arrangement;
|
|
69
|
+
//# sourceMappingURL=arrangeTables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrangeTables.d.ts","sourceRoot":"","sources":["../../src/screen/arrangeTables.ts"],"names":[],"mappings":"AASA,OAAO,EAAyB,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEpF;oBACoB;AACpB,eAAO,MAAM,OAAO,OAAO,CAAA;AAC3B,wDAAwD;AACxD,eAAO,MAAM,QAAQ,MAAM,CAAA;AAC3B,iEAAiE;AACjE,eAAO,MAAM,YAAY,MAAM,CAAA;AAC/B,4EAA4E;AAC5E,eAAO,MAAM,aAAa,MAAM,CAAA;AAEhC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAGnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAKxE;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAI7G;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAezE;AAED,MAAM,WAAW,WAAW;IAC1B,qFAAqF;IACrF,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,IAAI,EAAE,OAAO,CAAA;IACb,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAmBD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,CAAC,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7C,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;CAAE,EAC1G,IAAI,SAAgB,GACnB,WAAW,CAmEb"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Ticket, TicketGuest, TicketLine } from './session';
|
|
2
|
+
export interface BillCancellation {
|
|
3
|
+
name: string;
|
|
4
|
+
quantity: number;
|
|
5
|
+
totalCents: number;
|
|
6
|
+
authorizerName?: string;
|
|
7
|
+
guestName?: string | null;
|
|
8
|
+
memo?: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface BillCover {
|
|
11
|
+
name: string;
|
|
12
|
+
guestCount: number;
|
|
13
|
+
totalCents: number;
|
|
14
|
+
discountCents?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface BillPrintParams {
|
|
17
|
+
unitName: string;
|
|
18
|
+
/** "ESPELHO DA MESA" no salão; "ESPELHO DA COMANDA" fora dele. */
|
|
19
|
+
title: string;
|
|
20
|
+
positionLabel: string;
|
|
21
|
+
/** Como se chama o que a mesa dividiu: "Mesa", "Balcão", "Pedido". */
|
|
22
|
+
sharedLabel: string;
|
|
23
|
+
reference: string;
|
|
24
|
+
printedAt?: Date;
|
|
25
|
+
lines: TicketLine[];
|
|
26
|
+
party: TicketGuest[];
|
|
27
|
+
cancellations?: BillCancellation[];
|
|
28
|
+
covers?: BillCover[];
|
|
29
|
+
serviceChargePercent: number;
|
|
30
|
+
paidCents?: number;
|
|
31
|
+
balanceCents?: number | null;
|
|
32
|
+
/** O rodapé do papel. A casa assina o que entrega. */
|
|
33
|
+
footer?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface BillTotals {
|
|
36
|
+
itemsCents: number;
|
|
37
|
+
discountCents: number;
|
|
38
|
+
coverCents: number;
|
|
39
|
+
coverDiscountCents: number;
|
|
40
|
+
serviceCents: number;
|
|
41
|
+
totalCents: number;
|
|
42
|
+
paidCents: number;
|
|
43
|
+
balanceCents: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A conta do papel.
|
|
47
|
+
*
|
|
48
|
+
* A taxa sai POR PARTICIPANTE — cada um sobre a sua base elegível, com o
|
|
49
|
+
* percentual dele quando tem um. Somar tudo e aplicar uma taxa só dá outro
|
|
50
|
+
* número sempre que alguém tem isenção ou percentual próprio, e a diferença
|
|
51
|
+
* aparece no papel que o cliente está segurando.
|
|
52
|
+
*/
|
|
53
|
+
export declare function calculateBillTotals(p: BillPrintParams): BillTotals;
|
|
54
|
+
/** Monta o documento sem tocar em `window` — é o que torna isto testável. */
|
|
55
|
+
export declare function buildBillHtml(p: BillPrintParams): string;
|
|
56
|
+
/**
|
|
57
|
+
* Abre a janela e chama o diálogo do navegador.
|
|
58
|
+
*
|
|
59
|
+
* Devolve `false` quando o pop-up foi bloqueado — e esse `false` importa: sem
|
|
60
|
+
* ele o operador aperta "Imprimir", não acontece nada, e ele aperta de novo.
|
|
61
|
+
* Quem chama tem de dizer o que fazer ("Permita pop-ups…").
|
|
62
|
+
*/
|
|
63
|
+
export declare function printBill(p: BillPrintParams): boolean;
|
|
64
|
+
/** O título do papel segue o que a comanda É. */
|
|
65
|
+
export declare const billTitleFor: (kind?: Ticket["positionId"] | string) => string;
|
|
66
|
+
//# sourceMappingURL=billPrint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billPrint.d.ts","sourceRoot":"","sources":["../../src/screen/billPrint.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAClC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU,CAgClE;AAwHD,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CA+ExD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CA0CrD;AAED,iDAAiD;AACjD,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,KAAG,MACP,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface CancelAsked {
|
|
2
|
+
lineId: string;
|
|
3
|
+
quantity: number;
|
|
4
|
+
}
|
|
5
|
+
export interface CancelConfirmed {
|
|
6
|
+
lineId: string;
|
|
7
|
+
cancelledQuantity: number;
|
|
8
|
+
fullyCancelled: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Lança quando a resposta não corresponde ao pedido. Devolve o confirmado
|
|
12
|
+
* quando tudo bate.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* A frase do V1 para «alguém mexeu na comanda enquanto você cancelava».
|
|
16
|
+
*
|
|
17
|
+
* O V1 recebe `order_conflict` do servidor e diz isto. O V2 não espera um
|
|
18
|
+
* código: ele CONFERE a resposta item a item, o que pega mais casos — mas as
|
|
19
|
+
* mensagens estavam escritas do ponto de vista do servidor («o servidor não
|
|
20
|
+
* confirmou…»), e isso não diz ao garçom o que fazer.
|
|
21
|
+
*
|
|
22
|
+
* Quando o que veio diverge do que foi pedido, a causa real, na operação, é
|
|
23
|
+
* quase sempre esta: outro aparelho mexeu na comanda no meio do gesto. Então a
|
|
24
|
+
* frase é a do V1 — causa e AÇÃO —, e as duas mensagens técnicas ficam só para
|
|
25
|
+
* resposta malformada, que é problema de protocolo, não de operação.
|
|
26
|
+
*/
|
|
27
|
+
export declare const COMANDA_MUDOU = "O pedido mudou enquanto voc\u00EA cancelava. Atualize a comanda e tente novamente.";
|
|
28
|
+
export declare function assertCancellation(asked: CancelAsked[], answer: unknown): CancelConfirmed[];
|
|
29
|
+
/** A linha ainda pode ser cancelada? */
|
|
30
|
+
export declare function isCancelable(state: string | null | undefined): boolean;
|
|
31
|
+
//# sourceMappingURL=cancelCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelCheck.d.ts","sourceRoot":"","sources":["../../src/screen/cancelCheck.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED;;;GAGG;AACH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,uFACuD,CAAA;AAEjF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,EAAE,OAAO,GACd,eAAe,EAAE,CAwCnB;AAgCD,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGtE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** As seis do V1, nesta ordem. */
|
|
2
|
+
export declare const BANDEIRAS_CARTAO: readonly ["Visa", "Mastercard", "Elo", "Amex", "Hipercard", "Outra"];
|
|
3
|
+
/** E as cinco do vale-refeição. */
|
|
4
|
+
export declare const BANDEIRAS_VALE: readonly ["Pluxee", "Alelo", "VR", "Ticket", "Outra"];
|
|
5
|
+
/**
|
|
6
|
+
* É vale-refeição ou vale-alimentação? A regex do V1, palavra por palavra.
|
|
7
|
+
*
|
|
8
|
+
* Ela olha o NOME e não o `transaction_type`, e isso é de propósito. O
|
|
9
|
+
* catálogo do Pertinho tem um único tipo `voucher`, e ele se chama **«Gift
|
|
10
|
+
* Card»** — oferecer «Pluxee · Alelo · VR · Ticket» para um vale-presente
|
|
11
|
+
* seria pior que não perguntar nada. O V1 classifica esse caso como
|
|
12
|
+
* nem-cartão-nem-vale, e portanto sem bandeira; aqui também.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isMealVoucherName(name: string | null | undefined): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Que bandeiras oferecer — ou `null` quando a pergunta não se faz.
|
|
17
|
+
*
|
|
18
|
+
* O V1 mostra o campo quando `isCard || isVoucher`. Cartão aqui vem do
|
|
19
|
+
* `transaction_type`, que no V2 é confiável (`credit_card` / `debit_card`); o
|
|
20
|
+
* vale continua vindo do nome, pela razão acima. Dinheiro, Pix, transferência
|
|
21
|
+
* e cheque não têm bandeira, e um seletor vazio ao lado deles é um campo que
|
|
22
|
+
* o operador tenta preencher e não consegue.
|
|
23
|
+
*/
|
|
24
|
+
export declare function brandList(transactionType: string | null | undefined, typeName?: string | null): readonly string[] | null;
|
|
25
|
+
/**
|
|
26
|
+
* A bandeira escolhida ainda vale para esta lista?
|
|
27
|
+
*
|
|
28
|
+
* Trocar de cartão para vale não pode levar a bandeira antiga junto: o V1 faz
|
|
29
|
+
* essa limpeza num efeito, com o comentário «"Visa" num vale-refeição». Aqui
|
|
30
|
+
* é função pura, chamada no mesmo lugar em que a lista muda.
|
|
31
|
+
*/
|
|
32
|
+
export declare function keepBrand(brand: string, list: readonly string[] | null): string;
|
|
33
|
+
/**
|
|
34
|
+
* Parcela?
|
|
35
|
+
*
|
|
36
|
+
* Só o CRÉDITO. E a regra segue o tipo da CONTA escolhida, não o nome da
|
|
37
|
+
* forma — é o que o V1 escreve em dois lugares: *«Credit-card behavior must
|
|
38
|
+
* follow the selected account's account_type»*, porque o nome do método é
|
|
39
|
+
* livre e mente («Cielo - Link de Pagamento A vista» é conta de débito).
|
|
40
|
+
*
|
|
41
|
+
* `card_receivable_debit` é o `cartao_debito_recebimento` do V1 neste cluster.
|
|
42
|
+
*/
|
|
43
|
+
export declare function asksInstallments(transactionType: string | null | undefined, accountKind?: string | null, typeName?: string | null): boolean;
|
|
44
|
+
//# sourceMappingURL=cardBrand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardBrand.d.ts","sourceRoot":"","sources":["../../src/screen/cardBrand.ts"],"names":[],"mappings":"AASA,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,sEAAuE,CAAA;AAEpG,mCAAmC;AACnC,eAAO,MAAM,cAAc,uDAAwD,CAAA;AAInF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,SAAS,MAAM,EAAE,GAAG,IAAI,CAI1B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,MAAM,CAG/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC1C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAIT"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface CashGateState {
|
|
2
|
+
/**
|
|
3
|
+
* Tem o privilégio geral do Financeiro (`financial.manage`) — o `isAdmin`
|
|
4
|
+
* ou a «permissão GERAL da direção» do V1.
|
|
5
|
+
*/
|
|
6
|
+
privileged: boolean;
|
|
7
|
+
/** Existe um caixa ABERTO para esta pessoa nesta unidade. */
|
|
8
|
+
hasOpenSession: boolean;
|
|
9
|
+
/** Tem ao menos o direito de lançar pelo caixinha (`financial.create`). */
|
|
10
|
+
canSettle: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** A frase do V1, palavra por palavra, para quem tem caixinha e não o abriu. */
|
|
13
|
+
export declare const OPEN_YOUR_CASH = "Abra o seu caixinha para registrar este recebimento.";
|
|
14
|
+
/** E a do V1 para quem não tem direito nenhum de receber. */
|
|
15
|
+
export declare const CANNOT_RECEIVE = "Voc\u00EA n\u00E3o tem permiss\u00E3o para registrar recebimentos.";
|
|
16
|
+
/**
|
|
17
|
+
* Pode receber em dinheiro agora? `null` quando sim.
|
|
18
|
+
*
|
|
19
|
+
* A ordem das perguntas é a do V1: o privilégio primeiro, porque ele dispensa
|
|
20
|
+
* as outras duas; depois o direito de lançar; e por último o estado do caixa,
|
|
21
|
+
* que é a única das três que a própria pessoa resolve em dois toques.
|
|
22
|
+
*/
|
|
23
|
+
export declare function cashReceiptBlock(state: CashGateState): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* O PDV pode abrir um caixa por conta própria neste fechamento?
|
|
26
|
+
*
|
|
27
|
+
* Só o privilegiado. Para o resto, abrir seria criar a gaveta de outra pessoa
|
|
28
|
+
* — o V1 manda abrir o SEU caixinha, e esse gesto tem tela própria.
|
|
29
|
+
*/
|
|
30
|
+
export declare function mayOpenCashSession(state: CashGateState): boolean;
|
|
31
|
+
//# sourceMappingURL=cashGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cashGate.d.ts","sourceRoot":"","sources":["../../src/screen/cashGate.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAA;IACvB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,gFAAgF;AAChF,eAAO,MAAM,cAAc,yDAAyD,CAAA;AAEpF,6DAA6D;AAC7D,eAAO,MAAM,cAAc,uEAAwD,CAAA;AAEnF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEhE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface CatalogEmptyText {
|
|
2
|
+
title: string;
|
|
3
|
+
hint?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* O que dizer quando não há item para mostrar.
|
|
7
|
+
*
|
|
8
|
+
* A busca vem primeiro: quando há termo, ele é a causa mais provável e o
|
|
9
|
+
* operador tem um gesto (mudar o termo). Sem termo, a frase é a do V1 — e sem
|
|
10
|
+
* dica, porque não há o que sugerir a quem não pediu nada.
|
|
11
|
+
*/
|
|
12
|
+
export declare function catalogEmpty(query?: string): CatalogEmptyText;
|
|
13
|
+
//# sourceMappingURL=catalogEmpty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogEmpty.d.ts","sourceRoot":"","sources":["../../src/screen/catalogEmpty.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAe7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categoryIcon.d.ts","sourceRoot":"","sources":["../../src/screen/categoryIcon.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEgD,KAAK,UAAU,EACrE,MAAM,cAAc,CAAA;AA4CrB,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAItD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** Slot da venda sem posição, por CANAL. */
|
|
2
|
+
export declare const COUNTER_PREFIX = "__counter";
|
|
3
|
+
/** O slot de um canal sem mesa — `__counter:balcao`, `__counter:retirada`. */
|
|
4
|
+
export declare function counterSlot(menuId: string | undefined): string;
|
|
5
|
+
/** Este slot é de canal (e não uma posição de verdade)? */
|
|
6
|
+
export declare function isCounterSlot(key: string | undefined): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* A chave do livro para o estado atual.
|
|
9
|
+
*
|
|
10
|
+
* Posição escolhida ganha: uma comanda de balcão tocada na bandeja tem id de
|
|
11
|
+
* verdade, e é nela que o item deve cair. Sem posição, o slot é o do canal.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ticketSlot(activePositionId: string | undefined, menuId: string | undefined): string;
|
|
14
|
+
/**
|
|
15
|
+
* Trocar de canal larga a posição escolhida?
|
|
16
|
+
*
|
|
17
|
+
* A régua não é "mudou o id do menu": é **a conta ativa pertence a este
|
|
18
|
+
* canal?**. Medido na tela do Pertinho: tocar numa mesa ocupada muda a view
|
|
19
|
+
* para o cardápio, e o cardápio que existe é o do BALCÃO — então a trilha
|
|
20
|
+
* passava a marcar «Balcão» com a comanda da Mesa 3 ativa. Nesse estado, o
|
|
21
|
+
* toque em «Balcão» (o canal que a trilha já dizia ser o corrente) não trocava
|
|
22
|
+
* de id nenhum, e a venda de balcão caía na conta da mesa com gente sentada.
|
|
23
|
+
*
|
|
24
|
+
* Ficar no mesmo canal COM uma conta daquele canal não larga nada: é o operador
|
|
25
|
+
* tocando onde já está, e perder a comanda aberta aí seria castigo por um toque
|
|
26
|
+
* repetido.
|
|
27
|
+
*/
|
|
28
|
+
export declare function channelSwitchDropsPosition(from: {
|
|
29
|
+
menuId?: string;
|
|
30
|
+
activeKind?: string;
|
|
31
|
+
}, to: {
|
|
32
|
+
menuId: string;
|
|
33
|
+
kind?: string;
|
|
34
|
+
}): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Qual canal a trilha deve marcar como corrente.
|
|
37
|
+
*
|
|
38
|
+
* Não é sempre o menu visível. Quando há uma conta ativa, ela manda: a Mesa 3
|
|
39
|
+
* aberta com o cardápio do balcão na tela é uma conta de SALÃO, e marcar
|
|
40
|
+
* «Balcão» ali diz ao operador que ele está num canal em que não está. A trilha
|
|
41
|
+
* é o que ele lê para saber onde o próximo item cai; ela não pode mentir sobre
|
|
42
|
+
* isso.
|
|
43
|
+
*/
|
|
44
|
+
export declare function currentChannelId(menuId: string | undefined, activeKind: string | undefined, menus: Array<{
|
|
45
|
+
id: string;
|
|
46
|
+
kind?: string;
|
|
47
|
+
}>): string | undefined;
|
|
48
|
+
/** De `__counter:balcao` para `balcao`. Posição de verdade devolve undefined. */
|
|
49
|
+
export declare function channelOfSlot(key: string | undefined): string | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* A recusa do V1 quando não há unidade escolhida.
|
|
52
|
+
*
|
|
53
|
+
* Literal, e uma por canal — o V1 escreveu as três à mão em vez de montar a
|
|
54
|
+
* frase, e o motivo é o mesmo em todas: *"A comanda precisa da unidade para
|
|
55
|
+
* chegar à cozinha."* Sem unidade o pedido nasce sem casa e não chega a tela
|
|
56
|
+
* nenhuma da produção.
|
|
57
|
+
*
|
|
58
|
+
* Numa conta de uma casa só isto nunca dispara; é a conta com várias unidades e
|
|
59
|
+
* «Todas as unidades» no topo que cai aqui.
|
|
60
|
+
*/
|
|
61
|
+
export declare function channelUnitRefusal(channel: string, unitId: string | null | undefined,
|
|
62
|
+
/**
|
|
63
|
+
* A casa trabalha com unidades? (`tenants.unit_scoping_enabled`)
|
|
64
|
+
*
|
|
65
|
+
* O V1 não tem este eixo: lá a unidade é obrigatória e `currentUnit.id`
|
|
66
|
+
* existe sempre. No V2 ela é OPCIONAL, e `getActiveUnitId()` devolve
|
|
67
|
+
* `undefined` tanto para «Todas as unidades» quanto para uma casa que não usa
|
|
68
|
+
* unidades — dois estados muito diferentes com o mesmo valor.
|
|
69
|
+
*
|
|
70
|
+
* Portar a recusa ao pé da letra travaria o balcão PARA SEMPRE em toda casa
|
|
71
|
+
* de uma unidade só: não há unidade a escolher, então não há como sair da
|
|
72
|
+
* recusa. Sem unidades não há unidade a exigir, e a comanda abre com
|
|
73
|
+
* `unit_id` nulo.
|
|
74
|
+
*/
|
|
75
|
+
unitMode?: boolean): {
|
|
76
|
+
text: string;
|
|
77
|
+
detail: string;
|
|
78
|
+
} | undefined;
|
|
79
|
+
/** O prefixo das comandas abertas que não são a gaveta do canal. */
|
|
80
|
+
export declare const OPEN_BILL_PREFIX = "__open";
|
|
81
|
+
/** O id de posição de uma comanda aberta avulsa. */
|
|
82
|
+
export declare function openBillSlot(orderId: string): string;
|
|
83
|
+
/** O id da comanda, quando a posição é uma dessas. `undefined` se não for. */
|
|
84
|
+
export declare function orderOfOpenBill(key: string | undefined): string | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* A posição é SINTÉTICA — não é mesa?
|
|
87
|
+
*
|
|
88
|
+
* As duas famílias que o PDV inventa: a gaveta do canal e a comanda avulsa.
|
|
89
|
+
* Nenhuma tem linha em `plg_tables_tables`, e mandar qualquer uma delas para
|
|
90
|
+
* uma coluna `uuid` derruba a consulta inteira.
|
|
91
|
+
*/
|
|
92
|
+
export declare function isSyntheticPosition(key: string | undefined): boolean;
|
|
93
|
+
//# sourceMappingURL=channelSlot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channelSlot.d.ts","sourceRoot":"","sources":["../../src/screen/channelSlot.ts"],"names":[],"mappings":"AAyBA,4CAA4C;AAC5C,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE9D;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEnG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9C,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1C,MAAM,GAAG,SAAS,CAKpB;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;AACjC;;;;;;;;;;;;GAYG;AACH,QAAQ,UAAO,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAQ9C;AAeD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,WAAW,CAAA;AAExC,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG3E;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEpE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export type ComandaChannel = 'dine_in' | 'balcao' | 'retirada' | 'delivery';
|
|
2
|
+
export declare function comandaChannel(o: {
|
|
3
|
+
tableId?: string | null;
|
|
4
|
+
channel?: string | null;
|
|
5
|
+
/** A ESPÉCIE do V1 — `counter`, `takeout`, `delivery`, `sale`… */
|
|
6
|
+
kind?: string | null;
|
|
7
|
+
}): ComandaChannel | null;
|
|
8
|
+
/**
|
|
9
|
+
* Esta comanda fechada entra na lista deste canal?
|
|
10
|
+
*
|
|
11
|
+
* Duas condições, as duas do V1:
|
|
12
|
+
*
|
|
13
|
+
* 1. **o canal bate** — derivado, nunca lido da coluna;
|
|
14
|
+
* 2. **valeu mais que zero.** *"Mesa de R$ 0,00 é mesa aberta por engano e
|
|
15
|
+
* fechada em seguida — num dia real elas são um terço da lista. Não houve
|
|
16
|
+
* venda, não há nota a emitir e não há pagamento a conferir: na lista elas só
|
|
17
|
+
* empurram para baixo as mesas que importam."*
|
|
18
|
+
*/
|
|
19
|
+
export declare function closedBelongsToChannel(o: {
|
|
20
|
+
tableId?: string | null;
|
|
21
|
+
channel?: string | null;
|
|
22
|
+
totalCents?: number;
|
|
23
|
+
kind?: string | null;
|
|
24
|
+
}, channel: ComandaChannel): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* As contas fechadas que a coluna deve mostrar, para a view corrente.
|
|
27
|
+
*
|
|
28
|
+
* A lista chegava inteira e a tela a mostrava toda: no «Histórico do balcão»
|
|
29
|
+
* do Pertinho apareciam sessenta contas de MESA num canal que não tinha uma
|
|
30
|
+
* única linha. As 3.766 contas históricas do V1 vieram com `channel` nulo,
|
|
31
|
+
* então filtrar pela coluna não resolve — o canal se DERIVA, e a mesa decide
|
|
32
|
+
* primeiro.
|
|
33
|
+
*
|
|
34
|
+
* Sem eixo nenhum na lista (nem `tableId` nem `channel`), NADA é cortado: um
|
|
35
|
+
* app de um canal só continua vendo a lista dele.
|
|
36
|
+
*
|
|
37
|
+
* `isWaitlist` é a exceção, e ela é de natureza: a fila NÃO é canal de venda —
|
|
38
|
+
* ninguém abre conta nela e nada fecha nela. Sem isto ela caía justamente no
|
|
39
|
+
* "sem canal derivado, devolve tudo", e o histórico do balcão inteiro abria
|
|
40
|
+
* por cima de uma tela que diz «Ninguém na fila». Uma tela vazia com um resumo
|
|
41
|
+
* cheio ao lado é a pessoa somando dois assuntos.
|
|
42
|
+
*/
|
|
43
|
+
export declare function closedForView<T extends {
|
|
44
|
+
tableId?: string | null;
|
|
45
|
+
channel?: string | null;
|
|
46
|
+
totalCents?: number;
|
|
47
|
+
kind?: string | null;
|
|
48
|
+
}>(closed: T[] | undefined, channel: ComandaChannel | undefined, isWaitlist: boolean): T[] | undefined;
|
|
49
|
+
//# sourceMappingURL=comandaChannel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comandaChannel.d.ts","sourceRoot":"","sources":["../../src/screen/comandaChannel.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;AAE3E,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,GAAG,cAAc,GAAG,IAAI,CAuBxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAOpC,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAClG,OAAO,EAAE,cAAc,GACtB,OAAO,CAGT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IACtC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,EACC,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EACvB,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,UAAU,EAAE,OAAO,GAClB,CAAC,EAAE,GAAG,SAAS,CAMjB"}
|