fix(crm): mesghal by metal, jalali fit, scoped group filters
This commit is contained in:
@@ -130,6 +130,34 @@ export function invoiceMetalCounts(rows: Record<string, unknown>[]): {
|
||||
return { gold, silver };
|
||||
}
|
||||
|
||||
/**
|
||||
* فلزهای وزنی سند برای برچسب مثقال — ردیفهای صرفاً مالی (وزن ۰) نادیده گرفته میشوند
|
||||
* چون Jens_Felez آنها اغلب طلا (۰) است.
|
||||
*/
|
||||
export function invoiceMesghalMetals(rows: Record<string, unknown>[]): {
|
||||
gold: boolean;
|
||||
silver: boolean;
|
||||
} {
|
||||
let gold = false;
|
||||
let silver = false;
|
||||
for (const r of rows) {
|
||||
if (numOrZero(r.Vazn) === 0 && numOrZero(r.TabdilVazn) === 0) continue;
|
||||
const m = invoiceRowMetal(r);
|
||||
if (m === 'gold') gold = true;
|
||||
else if (m === 'silver') silver = true;
|
||||
}
|
||||
return { gold, silver };
|
||||
}
|
||||
|
||||
/** برچسبهای خط خالی مثقال برای نوشتن دستی روی فاکتور */
|
||||
export function invoiceMesghalLabels(rows: Record<string, unknown>[]): string[] {
|
||||
const { gold, silver } = invoiceMesghalMetals(rows);
|
||||
const labels: string[] = [];
|
||||
if (gold) labels.push('قیمت یک مثقال طلا:');
|
||||
if (silver) labels.push('قیمت یک مثقال نقره خام:');
|
||||
return labels;
|
||||
}
|
||||
|
||||
/**
|
||||
* عنوان ستون وزن تبدیلی — در تهحساب معمولاً نقره به ۹۲۵ و طلا به ۷۵۰ تبدیل میشود.
|
||||
* سند مخلوط → «وزن تبدیلی».
|
||||
@@ -285,8 +313,17 @@ export function printTahesabInvoicePdf(opts: {
|
||||
: '—';
|
||||
const codeFa =
|
||||
moshtariCode != null ? toFaDigits(String(moshtariCode)) : '—';
|
||||
// تهحساب قیمت مثقال نقرهٔ خامِ لحظهٔ ثبت را در سند برنمیگرداند؛ خط خالی برای نوشتن دستی
|
||||
const mesghalHtml = `<div class="mesghal-box"><span class="ib-k">قیمت یک مثقال نقره خام:</span><span class="mesghal-blank"></span></div>`;
|
||||
// تهحساب قیمت مثقال لحظهٔ ثبت را برنمیگرداند؛ خط خالی برای نوشتن دستی (بر اساس فلز سند)
|
||||
const mesghalLabels = invoiceMesghalLabels(group.rows);
|
||||
const mesghalHtml =
|
||||
mesghalLabels.length > 0
|
||||
? `<div class="mesghal-box">${mesghalLabels
|
||||
.map(
|
||||
(label) =>
|
||||
`<div class="mesghal-line"><span class="ib-k">${escapeHtml(label)}</span><span class="mesghal-blank"></span></div>`,
|
||||
)
|
||||
.join('')}</div>`
|
||||
: `<div class="mesghal-box"></div>`;
|
||||
const accountHtml = `<div class="account-box">
|
||||
<div class="acc-line">
|
||||
<span class="acc-title">حساب قبل:</span>
|
||||
@@ -553,11 +590,17 @@ export function printTahesabInvoicePdf(opts: {
|
||||
border-radius: 10px;
|
||||
background: transparent;
|
||||
padding: 8px 12px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
min-height: 2.5rem;
|
||||
}
|
||||
.mesghal-line {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 8px;
|
||||
min-height: 2.5rem;
|
||||
}
|
||||
.mesghal-blank {
|
||||
flex: 1;
|
||||
|
||||
Reference in New Issue
Block a user