Merge branch 'main' into cliente/tagumedica
This commit is contained in:
commit
074eed6d81
14 files changed
+132
-56
No files matched your search
@@ -11,10 +11,10 @@
|
||||
<sbo-window [title]="windowTitle()" [badge]="badge()" [status]="status()">
|
||||
<div class="sbo-hdr">
|
||||
<div class="sbo-col">
|
||||
<sbo-select-field label="Pago a" [options]="typeOptions" [value]="docType()" (valueChange)="onType($event)" [readonly]="saved()" />
|
||||
<sbo-select-field label="Pago a" dbName="DocType" [options]="typeOptions" [value]="docType()" (valueChange)="onType($event)" [readonly]="saved()" />
|
||||
@if (!toAccounts()) {
|
||||
<sbo-lookup-field
|
||||
[label]="screen.partner.label"
|
||||
[label]="screen.partner.label" dbName="CardCode"
|
||||
[lookup]="partnerLookup"
|
||||
[value]="cardCode()"
|
||||
[readonly]="saved()"
|
||||
@@ -23,17 +23,17 @@
|
||||
(valueChange)="onPartnerText($event)"
|
||||
(picked)="onPartner($event)"
|
||||
/>
|
||||
<sbo-text-field label="Nombre" [value]="cardName()" readonly />
|
||||
<sbo-text-field label="Nombre" dbName="CardName" [value]="cardName()" readonly />
|
||||
}
|
||||
</div>
|
||||
<div class="sbo-col">
|
||||
@if (isNew()) {
|
||||
<sbo-select-field label="Serie" [options]="seriesOptions()" [value]="series()" (valueChange)="series.set($event === null ? null : +$event)" />
|
||||
<sbo-select-field label="Serie" dbName="Series" [options]="seriesOptions()" [value]="series()" (valueChange)="series.set($event === null ? null : +$event)" />
|
||||
} @else {
|
||||
<sbo-text-field label="Número" [value]="'' + (doc()?.['DocNum'] ?? '')" readonly />
|
||||
<sbo-text-field label="Número" dbName="DocNum" [value]="'' + (doc()?.['DocNum'] ?? '')" readonly />
|
||||
}
|
||||
<sbo-date-field label="Fecha de contabilización" [(value)]="docDate" [readonly]="saved()" required />
|
||||
<sbo-date-field label="Fecha del documento" [(value)]="taxDate" [readonly]="saved()" />
|
||||
<sbo-date-field label="Fecha de contabilización" dbName="DocDate" [(value)]="docDate" [readonly]="saved()" required />
|
||||
<sbo-date-field label="Fecha del documento" dbName="TaxDate" [(value)]="taxDate" [readonly]="saved()" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -66,15 +66,15 @@
|
||||
<h3>Medios de pago</h3>
|
||||
<div class="sbo-hdr">
|
||||
<div class="sbo-col">
|
||||
<sbo-lookup-field label="Cuenta de efectivo" [lookup]="accountLookup" [value]="means().cashAccount" (valueChange)="setMeans({ cashAccount: $event })" [readonly]="saved()" />
|
||||
<sbo-number-field label="Efectivo" [decimals]="2" [value]="means().cashSum" (valueChange)="setMeans({ cashSum: $event })" [readonly]="saved()" />
|
||||
<sbo-lookup-field label="Cuenta de transferencia" [lookup]="accountLookup" [value]="means().transferAccount" (valueChange)="setMeans({ transferAccount: $event })" [readonly]="saved()" />
|
||||
<sbo-number-field label="Transferencia" [decimals]="2" [value]="means().transferSum" (valueChange)="setMeans({ transferSum: $event })" [readonly]="saved()" />
|
||||
<sbo-lookup-field label="Cuenta de efectivo" dbName="CashAccount" [lookup]="accountLookup" [value]="means().cashAccount" (valueChange)="setMeans({ cashAccount: $event })" [readonly]="saved()" />
|
||||
<sbo-number-field label="Efectivo" dbName="CashSum" [decimals]="2" [value]="means().cashSum" (valueChange)="setMeans({ cashSum: $event })" [readonly]="saved()" />
|
||||
<sbo-lookup-field label="Cuenta de transferencia" dbName="TransferAccount" [lookup]="accountLookup" [value]="means().transferAccount" (valueChange)="setMeans({ transferAccount: $event })" [readonly]="saved()" />
|
||||
<sbo-number-field label="Transferencia" dbName="TransferSum" [decimals]="2" [value]="means().transferSum" (valueChange)="setMeans({ transferSum: $event })" [readonly]="saved()" />
|
||||
</div>
|
||||
<div class="sbo-col">
|
||||
<sbo-date-field label="Fecha de transferencia" [value]="means().transferDate" (valueChange)="setMeans({ transferDate: $event })" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia" [value]="means().transferReference" (valueChange)="setMeans({ transferReference: $event })" [readonly]="saved()" />
|
||||
<sbo-lookup-field label="Cuenta de cheques" [lookup]="accountLookup" [value]="means().checkAccount" (valueChange)="setMeans({ checkAccount: $event })" [readonly]="saved()" />
|
||||
<sbo-date-field label="Fecha de transferencia" dbName="TransferDate" [value]="means().transferDate" (valueChange)="setMeans({ transferDate: $event })" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia" dbName="TransferReference" [value]="means().transferReference" (valueChange)="setMeans({ transferReference: $event })" [readonly]="saved()" />
|
||||
<sbo-lookup-field label="Cuenta de cheques" dbName="CheckAccount" [lookup]="accountLookup" [value]="means().checkAccount" (valueChange)="setMeans({ checkAccount: $event })" [readonly]="saved()" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -94,8 +94,8 @@
|
||||
|
||||
<div class="sbo-hdr" style="margin-top: 14px">
|
||||
<div class="sbo-col">
|
||||
<sbo-textarea-field label="Comentarios" [(value)]="remarks" [readonly]="saved()" />
|
||||
<sbo-text-field label="Comentarios del asiento" [(value)]="journalRemarks" [readonly]="saved()" />
|
||||
<sbo-textarea-field label="Comentarios" dbName="Remarks" [(value)]="remarks" [readonly]="saved()" />
|
||||
<sbo-text-field label="Comentarios del asiento" dbName="JournalRemarks" [(value)]="journalRemarks" [readonly]="saved()" />
|
||||
</div>
|
||||
<div class="sbo-col">
|
||||
<table class="totals">
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
@switch (f.type) {
|
||||
@case ('partner') {
|
||||
<sbo-lookup-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[required]="!!f.required"
|
||||
[readonly]="readOnly() || !isNew() || locked(f)"
|
||||
[value]="str(header()[f.key])"
|
||||
@@ -145,7 +145,7 @@
|
||||
}
|
||||
@case ('checkbox') {
|
||||
<sbo-checkbox-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[readonly]="readOnly() || !!f.readonly || locked(f)"
|
||||
[value]="header()[f.key] === 'tYES'"
|
||||
(valueChange)="setHeader(f.key, $event ? 'tYES' : 'tNO')"
|
||||
@@ -153,7 +153,7 @@
|
||||
}
|
||||
@case ('lookup') {
|
||||
<sbo-lookup-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[required]="!!f.required"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[value]="str(header()[f.key])"
|
||||
@@ -165,7 +165,7 @@
|
||||
}
|
||||
@case ('warehouse') {
|
||||
<sbo-lookup-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[required]="!!f.required"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[value]="str(header()[f.key])"
|
||||
@@ -176,7 +176,7 @@
|
||||
}
|
||||
@case ('date') {
|
||||
<sbo-date-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[required]="!!f.required"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[value]="str(header()[f.key])"
|
||||
@@ -185,7 +185,7 @@
|
||||
}
|
||||
@case ('select') {
|
||||
<sbo-select-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[required]="!!f.required"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[options]="f.options"
|
||||
@@ -196,7 +196,7 @@
|
||||
}
|
||||
@case ('number') {
|
||||
<sbo-number-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[decimals]="f.decimals"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[value]="+str(header()[f.key])"
|
||||
@@ -205,14 +205,14 @@
|
||||
}
|
||||
@case ('textarea') {
|
||||
<sbo-textarea-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[value]="str(header()[f.key])"
|
||||
(valueChange)="setHeader(f.key, $event)"
|
||||
/>
|
||||
}
|
||||
@case ('folio') {
|
||||
<sbo-field [label]="f.label" [dbName]="f.key">
|
||||
<sbo-field [label]="f.label" [dbName]="dbNames(f)">
|
||||
<sbo-input
|
||||
width="90px"
|
||||
[maxlength]="10"
|
||||
@@ -229,7 +229,7 @@
|
||||
</sbo-field>
|
||||
}
|
||||
@case ('group') {
|
||||
<sbo-field [label]="f.label" [dbName]="f.key">
|
||||
<sbo-field [label]="f.label" [dbName]="dbNames(f)">
|
||||
@for (c of f.cells; track c.key) {
|
||||
<sbo-input
|
||||
[width]="c.width"
|
||||
@@ -246,7 +246,7 @@
|
||||
</sbo-field>
|
||||
}
|
||||
@case ('series') {
|
||||
<sbo-field [label]="f.label" [dbName]="f.key">
|
||||
<sbo-field [label]="f.label" [dbName]="dbNames(f)">
|
||||
<sbo-select
|
||||
width="170px"
|
||||
ariaLabel="Serie de numeración"
|
||||
@@ -261,7 +261,7 @@
|
||||
}
|
||||
@case ('expenses') {
|
||||
<div class="exp">
|
||||
<h3>{{ f.label }}</h3>
|
||||
<h3 [attr.title]="dbNames(f)">{{ f.label }}</h3>
|
||||
<sbo-rows-table
|
||||
[columns]="expenseColumns"
|
||||
[rows]="expenses()"
|
||||
@@ -277,7 +277,7 @@
|
||||
}
|
||||
@case ('contact') {
|
||||
<sbo-select-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[options]="contactOptions()"
|
||||
placeholder=""
|
||||
@@ -287,7 +287,7 @@
|
||||
}
|
||||
@case ('address') {
|
||||
<sbo-select-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
[options]="f.side === 'ship' ? shipOptions() : billOptions()"
|
||||
placeholder=""
|
||||
@@ -302,7 +302,7 @@
|
||||
</sbo-field>
|
||||
}
|
||||
@case ('currency') {
|
||||
<sbo-field [label]="f.label" [dbName]="f.key">
|
||||
<sbo-field [label]="f.label" [dbName]="dbNames(f)">
|
||||
<sbo-select
|
||||
width="170px"
|
||||
ariaLabel="Moneda del documento"
|
||||
@@ -322,7 +322,7 @@
|
||||
}
|
||||
@case ('rounding') {
|
||||
@if (roundingEnabled()) {
|
||||
<sbo-field [label]="f.label" [dbName]="f.key">
|
||||
<sbo-field [label]="f.label" [dbName]="dbNames(f)">
|
||||
<sbo-checkbox
|
||||
ariaLabel="Redondear el total del documento"
|
||||
[readonly]="readOnly() || locked(f)"
|
||||
@@ -340,11 +340,11 @@
|
||||
}
|
||||
}
|
||||
@case ('computed') {
|
||||
<sbo-text-field [label]="f.label" [dbName]="f.key" readonly [value]="computedValue(f.source)" />
|
||||
<sbo-text-field [label]="f.label" [dbName]="dbNames(f)" readonly [value]="computedValue(f.source)" />
|
||||
}
|
||||
@default {
|
||||
<sbo-text-field
|
||||
[label]="f.label" [dbName]="f.key"
|
||||
[label]="f.label" [dbName]="dbNames(f)"
|
||||
[readonly]="readOnly() || !!f.readonly || locked(f)"
|
||||
[value]="str(header()[f.key])"
|
||||
(valueChange)="setHeader(f.key, $event)"
|
||||
|
||||
@@ -35,7 +35,7 @@ import {
|
||||
validateLayout,
|
||||
} from './document-model';
|
||||
import { SERVICE_DOC_TYPE } from './document-layouts';
|
||||
import { type ComputedSource, type GroupCell, type HeaderField, PARTNER_COLUMNS, WAREHOUSE_LOOKUP, hasCurrency, hasExpenses, hasFolio, hasPartnerData, hasSeries, headerKeysOf, keysOfFields, requiredHeaderOf } from './document-layouts';
|
||||
import { type ComputedSource, type GroupCell, type HeaderField, PARTNER_COLUMNS, fieldDbName, WAREHOUSE_LOOKUP, hasCurrency, hasExpenses, hasFolio, hasPartnerData, hasSeries, headerKeysOf, keysOfFields, requiredHeaderOf } from './document-layouts';
|
||||
import { type AddressSide, type AddressValues, addressFromExtension, addressFromPartner, composeAddress, toExtension } from './address-fields';
|
||||
import { DocumentPdf } from '../reports/document-pdf';
|
||||
import { AddressDialog } from './address-dialog';
|
||||
@@ -450,6 +450,8 @@ export class DocumentFormPage {
|
||||
}
|
||||
|
||||
/** Valor de una fila de solo lectura (número del documento, datos del socio, totales). */
|
||||
protected readonly dbNames = fieldDbName;
|
||||
|
||||
protected computedValue(source: ComputedSource): string {
|
||||
switch (source) {
|
||||
case 'docNum':
|
||||
|
||||
@@ -592,3 +592,42 @@ export const hasPartnerData = (layout: DocumentLayout): boolean => allFields(lay
|
||||
export const hasCurrency = (layout: DocumentLayout): boolean => allFields(layout).some((f) => f.type === 'currency');
|
||||
|
||||
export const hasFolio = (layout: DocumentLayout): boolean => allFields(layout).some((f) => f.type === 'folio' || (f.type === 'group' && f.cells.some((c) => c.key === 'FolioNumber')));
|
||||
|
||||
/**
|
||||
* Nombre(s) del campo de SAP de una fila del formulario, para «Campos» y la ayuda del cursor: el de un campo sencillo, o
|
||||
* todos los de una fila con varios controles (`FolioPrefixString · FolioNumber`).
|
||||
*/
|
||||
export function fieldDbName(f: HeaderField): string | undefined {
|
||||
switch (f.type) {
|
||||
case 'folio':
|
||||
return `${f.prefixKey} · ${f.numberKey}`;
|
||||
case 'group':
|
||||
return f.cells.map((c) => c.key).join(' · ');
|
||||
case 'series':
|
||||
return 'Series · DocNum';
|
||||
case 'currency':
|
||||
return 'DocCurrency · DocRate';
|
||||
case 'rounding':
|
||||
return 'Rounding · RoundingDiffAmount';
|
||||
case 'expenses':
|
||||
return 'DocumentAdditionalExpenses';
|
||||
case 'computed':
|
||||
return COMPUTED_DB_NAMES[f.source];
|
||||
default:
|
||||
return 'key' in f ? f.key : undefined;
|
||||
}
|
||||
}
|
||||
|
||||
const COMPUTED_DB_NAMES: Readonly<Record<ComputedSource, string>> = {
|
||||
docNum: 'DocNum',
|
||||
partnerName: 'CardName',
|
||||
partnerTaxId: 'FederalTaxID',
|
||||
subtotal: 'Σ líneas',
|
||||
expenses: 'Σ DocumentAdditionalExpenses',
|
||||
tax: 'VatSum',
|
||||
total: 'DocTotal',
|
||||
downPayment: 'DownPaymentAmount',
|
||||
applied: 'PaidToDate',
|
||||
balance: 'DocTotal − PaidToDate',
|
||||
};
|
||||
|
||||
@@ -12,21 +12,21 @@
|
||||
<div class="sbo-hdr">
|
||||
<div class="sbo-col">
|
||||
@if (isNew()) {
|
||||
<sbo-select-field label="Serie" [options]="seriesOptions()" [value]="series()" (valueChange)="series.set($event === null ? null : +$event)" />
|
||||
<sbo-select-field label="Serie" dbName="Series" [options]="seriesOptions()" [value]="series()" (valueChange)="series.set($event === null ? null : +$event)" />
|
||||
} @else {
|
||||
<sbo-text-field label="Número" [value]="'' + (doc()?.['JdtNum'] ?? '')" readonly />
|
||||
<sbo-text-field label="Número" dbName="JdtNum" [value]="'' + (doc()?.['JdtNum'] ?? '')" readonly />
|
||||
}
|
||||
<sbo-text-field label="Comentarios" [value]="memo()" (valueChange)="set('memo', $event)" [readonly]="saved()" />
|
||||
<sbo-text-field label="Comentarios" dbName="Memo" [value]="memo()" (valueChange)="set('memo', $event)" [readonly]="saved()" />
|
||||
</div>
|
||||
<div class="sbo-col">
|
||||
<sbo-date-field label="Fecha de contabilización" [(value)]="referenceDate" [readonly]="saved()" required />
|
||||
<sbo-date-field label="Fecha de vencimiento" [value]="dueDate()" (valueChange)="onDueDate($event)" [readonly]="saved()" />
|
||||
<sbo-date-field label="Fecha del documento" [(value)]="taxDate" [readonly]="saved()" />
|
||||
<sbo-date-field label="Fecha de contabilización" dbName="ReferenceDate" [(value)]="referenceDate" [readonly]="saved()" required />
|
||||
<sbo-date-field label="Fecha de vencimiento" dbName="DueDate" [value]="dueDate()" (valueChange)="onDueDate($event)" [readonly]="saved()" />
|
||||
<sbo-date-field label="Fecha del documento" dbName="TaxDate" [(value)]="taxDate" [readonly]="saved()" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="sbo-hdr">
|
||||
<div class="sbo-col">
|
||||
<sbo-field label="Indicador / Folio">
|
||||
<sbo-field label="Indicador / Folio" dbName="Indicator · FolioPrefixString · FolioNumber">
|
||||
<sbo-input width="80px" ariaLabel="Indicador" [readonly]="saved()" [value]="indicator()" (valueChange)="indicator.set($event)" />
|
||||
@if (!saved()) {
|
||||
<button type="button" class="sbo-btn" aria-label="Abrir la lista de indicadores" title="Lista de valores" (click)="indicatorOpen.set(true)">…</button>
|
||||
@@ -36,9 +36,9 @@
|
||||
</sbo-field>
|
||||
</div>
|
||||
<div class="sbo-col">
|
||||
<sbo-text-field label="Referencia 1" [value]="reference()" (valueChange)="set('reference', $event)" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia 2" [value]="reference2()" (valueChange)="set('reference2', $event)" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia 3" [value]="reference3()" (valueChange)="set('reference3', $event)" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia 1" dbName="Reference" [value]="reference()" (valueChange)="set('reference', $event)" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia 2" dbName="Reference2" [value]="reference2()" (valueChange)="set('reference2', $event)" [readonly]="saved()" />
|
||||
<sbo-text-field label="Referencia 3" dbName="Reference3" [value]="reference3()" (valueChange)="set('reference3', $event)" [readonly]="saved()" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in new issue
Block a user