PageSourceSearch

https://altego.portal.polyfazer.eu/chunks/bank-account-statistics-DewreIu9.js

js polyfazer.eu collected 2026-09-24 14:06:02 UTC 19,086 bytes, 370 lines download raw bytes

1import{C as r,P as s}from"./polyfazer-app-DumDTOPg.js";import"./diamond-listing-2-CZxxStx-.js";import{L as l}from"./lang-helper-behavior-D3p_DZHb.js";import{b as d}from"./bank-account-services-DJ_eiVaj.js";import{P as c}from"./PolyfazerFilter-G6wDdeD6.js";import{v as n,a5 as m,H as p,A as u,Y as g}from"./main-BEpca-0G.js";import"./select-region-input-CrDRgh49.js";import"./date-period-input-Bhj26AcT.js";import{billingListingStyles as v}from"./billing-listing-pICKrrZb.js";import{a as f}from"./billing-services-B8qK7uPA.js";import{parasiteInvoicesListingStyles as y}from"./parasite-invoice-listing-DFTeNDcD.js";import{a as b}from"./parasite-services-B_DDr0WG.js";import"./session-statistics-report-details-DM5hdYcX.js";import"./dom-variable-4vxcuSj0.js";import{h as o}from"./polymer-utils-B8xivS0d.js";import{m as i}from"./diamond-table-DiX_YLmS.js";import"./question-tag-C9ym_uv9.js";import"./PolyfazerFiltersManager-B20DzVOd.js";import"./ExtendedDate-BLMVein7.js";import"./dialog-input-behavior-DcN20D9O.js";import"./input-mixin-CrUPo4TG.js";import"./date-range-input-Box24sRP.js";import"./vaadin-date-picker-C0nM5XdO.js";import"./typography-WuKe67Dy.js";import"./vaadin-button-styles-BwN-jsYe.js";import"./BetterHTML-BN6nzApa.js";import"./BetterTemplateHandling-CTXk4mRb.js";import"./theme-mixin-UzPGm89E.js";import"./stamp-repeat-CtgpozQL.js";import"./filters-behavior-BUO4aVrX.js";import"./diamond-section-overlay-D3ZGchRP.js";class P extends r(l(s)){static get unpaidPartnerInvoices(){return o`
2			<paper-material>
3				<diamond-table as="billing" unique-id="account-unpaid-partner-invoices" headers="[[unpaidPartnerInvoicesTableHeaders]]" items="[[statistics.unpaidPartnerInvoices]]" can-modify>
4					<template>
5						<a class="diamond-row" billing-id$="[[billing.id]]" href$="/billing/[[billing.id]]/details" state$="[[billing.state]]">
6							${v}
7
8							<diamond-item name="icon">
9								<template is="dom-if" if="[[isEqual(billing.state, 'PENDING')]]">
10									<question-tag class="state-icon" icon="schedule">[[_lang('waitingToBeApproved')]]</question-tag>
11								</template>
12								<template is="dom-if" if="[[isEqual(billing.state, 'APPROVED')]]">
13									<question-tag class="state-icon" icon="check">[[_lang('approved')]]</question-tag>
14								</template>
15								<template is="dom-if" if="[[isEqual(billing.state, 'DECLINED')]]">
16									<question-tag class="state-icon" icon="close">[[_lang('declined')]]</question-tag>
17								</template>
18							</diamond-item>
19							<diamond-item text="#[[billing.id]]" name="id"></diamond-item>
20							<diamond-item text="[[millisecondsToDate(billing.createdOn, 0, 0)]]" name="createdOn"></diamond-item>
21							<diamond-item name="partner">
22								<redirect-item item="[[billing.partner]]" href="/partners/[[billing.partner.id]]"></redirect-item>
23							</diamond-item>
24							<diamond-item name="period">
25								<div class="inner">
26									[[millisecondsToDate(billing.periodFrom, 0, 0, 1, billing.invoiceData.serviceLocationTimezone)]]
27									<br>
28									[[millisecondsToDate(billing.periodTo, 0, 0, 1, billing.invoiceData.serviceLocationTimezone)]]
29								</div>
30							</diamond-item>
31							<diamond-item text="[[millisecondsToDate(billing.periodFrom, 0, 0, 1, billing.invoiceData.serviceLocationTimezone)]]" name="periodFrom"></diamond-item>
32							<diamond-item text="[[millisecondsToDate(billing.periodTo, 0, 0, 1, billing.invoiceData.serviceLocationTimezone)]]" name="periodTo"></diamond-item>
33							<diamond-item name="total">
34								<price-display price="[[billing.totalCost]]" currency="[[billing.invoiceData.currency]]"></price-display>
35							</diamond-item>
36							<diamond-item name="paymentAmountLeft">
37								<price-display price="[[billing.paymentAmountLeft]]" currency="[[billing.invoiceData.currency]]"></price-display>
38							</diamond-item>
39							<diamond-item name="totalStylized">
40								<div class="inner" billing-type$="[[billing.type]]" not-null$="[[!isEqual(billing.totalCost, 0)]]">
41									<span class="price">
42										<template is="dom-if" if="[[!isEqual(billing.totalCost, 0, NULL)]]">
43											<template is="dom-if" if="[[isEqual(billing.type, 'POLYFAZER_PAYS_PARTNER')]]">
44												<iron-icon class="unify" icon="arrow-drop-down"></iron-icon>
45											</template>
46											<template is="dom-if" if="[[isEqual(billing.type, 'PARTNER_PAYS_POLYFAZER')]]">
47												<iron-icon class="unify" icon="arrow-drop-up"></iron-icon>
48											</template>
49										</template>
50										<span>[[billing.totalCost]] [[_lang(billing.currency)]]</span>
51									</span>
52								</div>
53							</diamond-item>
54							<diamond-item text="[[_lang(billing.type)]]" name="type"></diamond-item>
55							<diamond-item text="[[millisecondsToDate(billing.sentToPartnerOn, 0, 0)]]" fallback="-" name="sentToPartnerOn"></diamond-item>
56							<diamond-item text="[[billing.entryNumberString]]" name="entryNumberString" fallback="-"></diamond-item>
57							<diamond-item name="invoice">
58								<div class="inner flex-row center">
59									<template is="dom-if" if="[[billing.invoiceAvailable]]">
60										<paper-icon-button class="action-button" icon="picture-as-pdf" on-click="preventDefault" on-mouseup="_downloadPartnerInvoice"></paper-icon-button>
61									</template>
62									<template is="dom-if" if="[[!billing.invoiceAvailable]]">-</template>
63								</div>
64							</diamond-item>
65						</a>
66					</template>
67				</diamond-table>
68			</paper-material>
69		`}static get unpaidParasiteInvoices(){return o`
70			<paper-material>
71				<diamond-table as="invoice" unique-id="account-unpaid-parasite-invoices" headers="[[unpaidParasiteInvoicesTableHeaders]]" items="[[statistics.unpaidParasiteInvoices]]" can-modify>
72					<template>
73						<a class="diamond-row" invoice-id$="[[invoice.id]]" href$="/provisions/[[invoice.id]]/details" state$="[[invoice.state]]">
74							${y}
75
76							<diamond-item name="icon">
77								<template is="dom-if" if="[[isEqual(invoice.state, 'PENDING_APPROVAL')]]">
78									<question-tag class="state-icon" icon="schedule">[[_lang('waitingToBeApproved')]]</question-tag>
79								</template>
80								<template is="dom-if" if="[[isEqual(invoice.state, 'APPROVED')]]">
81									<question-tag class="state-icon" icon="check">[[_lang('approved')]]</question-tag>
82								</template>
83								<template is="dom-if" if="[[isEqual(invoice.state, 'DECLINED')]]">
84									<question-tag class="state-icon" icon="close">[[_lang('declined')]]</question-tag>
85								</template>
86							</diamond-item>
87							<diamond-item text="#[[invoice.id]]" name="id"></diamond-item>
88							<diamond-item text="[[millisecondsToDate(invoice.createdOn, 0, 0)]]" name="createdOn"></diamond-item>
89							<diamond-item name="partner">
90								<redirect-item item="[[invoice.partner]]" href="/partners/[[invoice.partner.id]]"></redirect-item>
91							</diamond-item>
92							<diamond-item name="period">
93								[[millisecondsToDate(invoice.periodFrom, 0, 0, 1, invoice.invoiceData.serviceLocationTimezone)]]
94								<br>
95								[[millisecondsToDate(invoice.periodTo, 0, 0, 1, invoice.invoiceData.serviceLocationTimezone)]]
96							</diamond-item>
97							<diamond-item text="[[millisecondsToDate(invoice.periodFrom, 0, 0, 1, invoice.invoiceData.serviceLocationTimezone)]]" name="periodFrom"></diamond-item>
98							<diamond-item text="[[millisecondsToDate(invoice.periodTo, 0, 0, 1, invoice.invoiceData.serviceLocationTimezone)]]" name="periodTo"></diamond-item>
99							<diamond-item name="total">
100								<price-display price="[[invoice.totalCost]]" currency="[[invoice.currency]]"></price-display>
101							</diamond-item>
102							<diamond-item name="paymentAmountLeft">
103								<price-display price="[[invoice.paymentAmountLeft]]" currency="[[invoice.currency]]"></price-display>
104							</diamond-item>
105							<diamond-item text="[[millisecondsToDate(invoice.sentToPartnerOn, 0, 0)]]" fallback="-" name="sentToPartnerOn"></diamond-item>
106							<diamond-item name="invoice">
107								<div class="inner flex-row center">
108									<template is="dom-if" if="[[invoice.invoiceAvailable]]">
109										<paper-icon-button class="action-button" icon="picture-as-pdf" on-click="preventDefault" on-mouseup="_downloadParasiteInvoice"></paper-icon-button>
110									</template>
111									<template is="dom-if" if="[[!invoice.invoiceAvailable]]">-</template>
112								</div>
113							</diamond-item>
114						</a>
115					</template>
116				</diamond-table>
117			</paper-material>
118		`}static get transactionUnknownPaymentTemplate(){return o`
119			<template is="dom-if" if="[[isEqual(transaction.key, '${n.UNKNOWN}')]]">
120				<iron-icon icon="warning" class="unify unknown-payment" style="fill: var(--error-color)"></iron-icon>
121			</template>
122			<template is="dom-if" if="[[!isEqual(transaction.key, '${n.UNKNOWN}')]]">
123				<div></div>
124			</template>
125		`}static get transactionListItemTemplate(){return o`
126			<label>
127				[[translateBankAccountTransactionType(transaction.key)]]
128
129				<template is="dom-if" if="[[transaction.info]]">
130					<question-tag>[[transaction.info]]</question-tag>
131				</template>
132			</label>
133
134			<template is="dom-if" if="[[transaction.incoming]]">
135				<div class="price">
136					+<price-display price="[[transaction.incoming]]" currency="[[currency]]"></price-display>
137				</div>
138
139				<div>
140					<template is="dom-if" if="[[isEqual(transaction.key, '${n.POLYFAZER_PARTNER}')]]">
141						<question-tag class="direction-help">[[_lang('bankAccountStatisticsTransactionIncomingHelp')]]</question-tag>
142					</template>
143
144					${this.transactionUnknownPaymentTemplate}
145				</div>
146			</template>
147
148			<template is="dom-if" if="[[transaction.outgoing]]">
149				<template is="dom-if" if="[[transaction.incoming]]">
150					<label></label>
151				</template>
152
153				<div class="price">
154					-<price-display price="[[transaction.outgoing]]" currency="[[currency]]"></price-display>
155				</div>
156
157				<div>
158					<template is="dom-if" if="[[isEqual(transaction.key, '${n.POLYFAZER_PARTNER}')]]">
159						<question-tag class="direction-help">[[_lang('bankAccountStatisticsTransactionOutgoingHelp')]]</question-tag>
160					</template>
161
162					${this.transactionUnknownPaymentTemplate}
163				</div>
164			</template>
165		`}static get template(){return o`
166			${super.template}
167			<style>
168				:host {
169					width: 100%;
170					display: block;
171				}
172
173				paper-material > paper-material {
174					border-radius: var(--block-border-radius) var(--block-border-radius) 0 0;
175				}
176
177				.options {
178					display: grid;
179					grid-template-columns: repeat(2, 1fr) auto;
180					grid-gap: 1em;
181					background: var(--primary-background-color);
182					padding: 20px 20px 10px;
183				}
184
185				.details[has-statistics],
186				.statistics {
187					padding: 20px;
188				}
189
190				diamond-table {
191					--loading-overlay-color: var(--surface-color);
192					--on-loading-overlay-color: var(--on-surface-color);
193					min-height: 200px;
194				}
195
196				.details {
197					position: relative;
198					min-height: 250px;
199					display: grid;
200					grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
201				}
202
203				.details h2 {
204					margin-bottom: 1rem;
205					margin-top: 2rem;
206				}
207
208				.details .grid-table label question-tag {
209					margin: 0 0.2em;
210				}
211
212				.details .grid-table label question-tag {
213					margin-top: -3px;
214				}
215
216				.transactions {
217					grid-template-columns: auto auto 1fr;
218					grid-gap: 0.2rem 0;
219				}
220
221				.no-unknown-transactions-message,
222				.transactions .price {
223					display: flex;
224					justify-content: flex-end;
225					margin: 0 1rem;
226				}
227
228				.transactions .direction-help {
229					font-size: 1.2em;
230				}
231
232				.total-profit {
233					grid-column: span 2;
234				}
235
236				.no-unknown-transactions-message {
237					grid-column: span 2;
238					display: flex;
239					justify-content: flex-end;
240				}
241
242				@media screen and (max-width: 500px) {
243					.details,
244					.options {
245						grid-template-columns: 1fr;
246					}
247				}
248			</style>
249
250			<paper-material class="root">
251				<paper-material class="options">
252					<date-period-input value="{{requestData.period}}" required></date-period-input>
253					<select-region-input value="{{requestData.region}}"></select-region-input>
254
255					<paper-button on-click="refresh" disabled="[[!_canRefresh(requestData.period.from, requestData.period.to, loading)]]">[[_lang('refresh')]]</paper-button>
256				</paper-material>
257
258				<div class="details" has-statistics$="[[isset(statistics)]]">
259					<diamond-section-overlay loading="[[loading]]" error="[[error]]" on-retry="refresh"></diamond-section-overlay>
260
261					<template is="dom-if" if="[[statistics]]">
262						<dom-variable currency="[[statistics.currency]]" variables="currency">
263							<template>
264								<div>
265									<h2>[[_lang('issuedInvoicesInPeriod')]]</h2>
266									<div class="grid-table">
267										<label>
268											[[_lang('totalAmountIssued')]]
269											<question-tag>[[_lang('totalAmountIssuedPartnerPaysPolyfazerHelp')]]</question-tag>
270										</label>
271										<price-display price="[[statistics.partnerPaysPolyfazer.total]]" currency="[[currency]]"></price-display>
272
273										<label>
274											[[_lang('totalPaid')]]
275											<question-tag>[[_lang('totalPaidHelp')]]</question-tag>
276
277										</label>
278										<price-display price="[[statistics.partnerPaysPolyfazer.totalResolved]]" currency="[[currency]]"></price-display>
279
280										<label>
281											[[_lang('paidInPeriod')]]
282											<question-tag>[[_lang('paidInPeriodHelp')]]</question-tag>
283										</label>
284										<price-display price="[[statistics.partnerPaysPolyfazer.resolvedInPeriod]]" currency="[[currency]]"></price-display>
285									</div>
286								</div>
287
288								<div>
289									<h2>[[_lang('provisionPayments')]]</h2>
290									<div class="grid-table">
291										<label>
292											[[_lang('totalAmountIssued')]]
293											<question-tag>[[_lang('totalAmountIssuedHelp')]]</question-tag>
294										</label>
295										<price-display price="[[statistics.parasites.total]]" currency="[[currency]]"></price-display>
296
297										<label>
298											[[_lang('totalPaid')]]
299											<question-tag>[[_lang('totalPaidHelp')]]</question-tag>
300										</label>
301										<price-display price="[[statistics.parasites.totalResolved]]" currency="[[currency]]"></price-display>
302
303										<label>
304											[[_lang('paidInPeriod')]]
305											<question-tag>[[_lang('paidInPeriodHelp')]]</question-tag>
306										</label>
307										<price-display price="[[statistics.parasites.resolvedInPeriod]]" currency="[[currency]]"></price-display>
308									</div>
309								</div>
310
311								<div>
312									<h2>[[_lang('paymentsToPartnersInPeriod')]]</h2>
313									<div class="grid-table">
314										<label>
315											[[_lang('totalAmountIssued')]]
316											<question-tag>[[_lang('totalAmountIssuedHelp')]]</question-tag>
317										</label>
318										<price-display price="[[statistics.polyfazerPaysPartner.total]]" currency="[[currency]]"></price-display>
319
320										<label>
321											[[_lang('totalPaid')]]
322											<question-tag>[[_lang('totalPaidHelp')]]</question-tag>
323										</label>
324										<price-display price="[[statistics.polyfazerPaysPartner.totalResolved]]" currency="[[currency]]"></price-display>
325
326										<label>
327											[[_lang('paidInPeriod')]]
328											<question-tag>[[_lang('paidInPeriodHelp')]]</question-tag>
329										</label>
330										<price-display price="[[statistics.polyfazerPaysPartner.resolvedInPeriod]]" currency="[[currency]]"></price-display>
331									</div>
332								</div>
333
334								<div>
335									<h2 style="margin-bottom: 0">[[_lang('availableProfitInPeriod')]]</h2>
336
337									<div class="flex-row" style="justify-content: flex-start">
338										<div class="grid-table transactions">
339											<h1 class="total-profit price">
340												<price-display price="[[statistics.availableFunds.total]]" currency="[[currency]]"></price-display>
341											</h1>
342											<div></div>
343
344											<template is="dom-repeat" items="[[_mapTransactions(statistics.availableFunds.breakdown)]]" as="transaction">
345												${this.transactionListItemTemplate}
346											</template>
347										</div>
348									</div>
349								</div>
350
351								<div>
352									<template is="dom-if" if="[[statistics.transactions]]">
353										<h2>[[_lang('transactionsInPeriod')]]</h2>
354									</template>
355									<div class="grid-table transactions">
356										<template is="dom-repeat" items="[[relevantTransactions]]" as="transaction">
357											${this.transactionListItemTemplate}
358										</template>
359										<template is="dom-if" if="[[_isUnknownTransactionTypeMissing(relevantTransactions)]]">
360											<label class="no-unknown-transactions-message">[[_lang('allTransactionsIdentified')]]</label>
361										</template>
362									</div>
363								</div>
364							</template>
365						</dom-variable>
366					</template>
367				</div>
368			</paper-material>
369		`}static get properties(){return{accountID:Number,requestData:Object,statistics:Object,relevantTransactions:{type:Array,computed:"_mapTransactions(statistics.transactions)"},unpaidPartnerInvoicesTableHeaders:{type:Object,value:{icon:{...i.icon,hideStripe:!0,visible:!1},id:i.id,createdOn:{...i.date,visible:!1},partner:{...i.partner,width:5},period:{...i.date,visible:!1,horizontalAlign:"flex-end",field:"periodFrom"},periodFrom:i.date,periodTo:i.date,total:{label:"totalCost",field:"totalCost",horizontalAlign:"flex-end"},paymentAmountLeft:{horizontalAlign:"flex-end"},type:{filter:!1,horizontalAlign:"center",visible:!1},sentToPartnerOn:{filter:!1},entryNumberString:{field:"orderSeriesEntry.entryNumberString"},invoice:{...i.actionButton,label:"downloadInvoice",visible:!1}}},unpaidParasiteInvoicesTableHeaders:{type:Object,value:{icon:{...i.icon,hideStripe:!0,visible:!1},id:i.id,createdOn:{...i.date,width:1,visible:!1},partner:{...i.partner,width:5},period:{...i.date,width:1,field:"periodFrom",visible:!1},periodFrom:{...i.date,width:1},periodTo:{...i.date,width:1},total:{label:"totalCost",field:"totalCost",width:2,horizontalAlign:"flex-end"},paymentAmountLeft:{horizontalAlign:"flex-end"},sentToPartnerOn:{filter:!1},invoice:{...i.actionButton,label:"downloadInvoice",visible:!1}}}}}init(e){window.bankAccountStatistics=this,this.accountID!=e&&this.setProperties({accountID:e,requestData:{period:c.getValueFromRange(m.THIS_MONTH),region:null},statistics:null})}refresh(){let{period:e,region:t}=this.requestData;this.set("loading",!0),this.clearErrorFromResponse(),d.getStatistics(this.accountID,{...e,regionID:p(t,"id")||void 0}).then(a=>this.set("statistics",a),a=>this.setErrorFromResponse(a)).finally(()=>{this.set("loading",!1)})}_downloadPartnerInvoice(e){let t=this.getAttr(e,"billing-id");this.downloadFile(()=>f(t).downloadPartnerInvoice())}_downloadParasiteInvoice(e){let t=this.getAttr(e,"invoice-id");this.downloadFile(()=>b(t).downloadInvoice())}_canRefresh(e,t,a){return a?!1:e&&t}_mapTransactions(e){return u.sortWithOrder(g.mapValid(e,(t,a)=>{if(!(!a.incoming&&!a.outgoing))return{key:t,...a}}),Object.values(n),({item1:t,item2:a})=>t.key==a)}_isUnknownTransactionTypeMissing(e){return!e.some(t=>t.key==n.UNKNOWN)}}window.customElements.define("bank-account-statistics",P);
370//# sourceMappingURL=bank-account-statistics-DewreIu9.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.