@if (stockSummary.length > 0) {
{{ 'labels.inputs.Available Stock by Book Size' | translate }}
@for (row of stockSummary; track row.seriesCode + row.leavesPerBook) {
{{ row.books }}
{{ 'labels.inputs.books' | translate }} × {{ row.leavesPerBook }}-{{ 'labels.inputs.leaf' | translate }}
{{ row.seriesCode }}
}
}
@if (showReceiveForm) {
{{ 'labels.text.Highest leaf serial allocated so far, across every series' | translate }}: {{ globalHighestAllocated }} — {{ 'labels.text.next available start' | translate }}: {{ globalHighestAllocated + 1 }}
{{ 'labels.inputs.Series' | translate }} @for (s of seriesList; track s.id) { {{ s.seriesCode }} — {{ s.name }} ({{ s.leavesPerBook }}-{{ 'labels.inputs.leaf' | translate }}) } {{ 'labels.inputs.Office' | translate }} @for (office of offices; track office.id) { {{ office.name }} } {{ 'labels.inputs.Number of Books' | translate }} @if (receiveLeavesPerBook) { {{ receiveTotalLeaves }} {{ 'labels.inputs.leaves' | translate }} ({{ 'labels.inputs.books' | translate }} × {{ receiveLeavesPerBook }}) } {{ 'labels.inputs.Range Start' | translate }} {{ 'labels.text.Auto-suggested to avoid overlap across every series; editable' | translate }} ({{ globalHighestAllocated }} + 1) {{ 'labels.inputs.Range End' | translate }} {{ 'labels.text.Calculated from books x book size' | translate }} {{ 'labels.inputs.Batch / PO Reference' | translate }}
}
@for (s of lotStatusOptions; track s) { }
{{ 'labels.inputs.Series' | translate }} {{ l.seriesCode }} {{ 'labels.inputs.Office' | translate }} {{ l.officeName }} {{ 'labels.inputs.Leaf Range' | translate }} {{ l.rangeStart }} – {{ l.rangeEnd }} {{ 'labels.inputs.Remaining' | translate }} {{ l.remainingBooks ?? 0 }} {{ 'labels.inputs.books' | translate }} × {{ l.leavesPerBook }}-{{ 'labels.inputs.leaf' | translate }} ({{ l.remainingLeaves }} {{ 'labels.inputs.leaves' | translate }}) @if (l.lowStock) { {{ 'labels.text.Low Stock' | translate }} } {{ 'labels.inputs.Status' | translate }} {{ l.status }} @if (l.status === 'AVAILABLE') { }
@if (displayedLots.length === 0) {
{{ 'labels.text.No records to display' | translate }}
} @if (lotTotalRecords > 0) { }
@if (showDispatchForm) {
{{ 'labels.inputs.Series' | translate }} @for (s of seriesList; track s.id) { {{ s.seriesCode }} — {{ s.name }} } {{ 'labels.inputs.From Office' | translate }} @for (office of offices; track office.id) { {{ office.name }} } {{ 'labels.inputs.To Office' | translate }} @for (office of offices; track office.id) { {{ office.name }} } {{ 'labels.inputs.From Lot Id' | translate }} {{ 'labels.text.The stock-lot id to draw the transfer from (see Stock Lots tab)' | translate }} {{ 'labels.inputs.No of Leaves' | translate }}
}
@for (s of transferStatusOptions; track s) { }
{{ 'labels.inputs.Series' | translate }} {{ t.seriesCode }} {{ 'labels.inputs.From Office' | translate }} {{ t.fromOfficeName }} {{ 'labels.inputs.To Office' | translate }} {{ t.toOfficeName }} {{ 'labels.inputs.Leaf Range' | translate }} {{ t.rangeStart }} – {{ t.rangeEnd }} {{ 'labels.inputs.Leaves' | translate }} {{ t.totalLeaves }} {{ 'labels.inputs.Status' | translate }} {{ t.status }} {{ 'labels.inputs.Dispatch Date' | translate }} {{ t.dispatchDate | dateFormat }} @if (t.status === 'DISPATCHED') { }
@if (stockTransfers.length === 0) {
{{ 'labels.text.No records to display' | translate }}
} @if (transferTotalRecords > 0) { }