{ "version": 3, "sources": ["apps/frontend/src/app/projects/services/sale-opportunities.service.ts", "apps/frontend/src/app/accounting/services/invoices.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { UiPreferencesService } from '@proman/services/ui-preferences.service';\nimport { Entity } from '@proman/services/entity.service';\nimport { prepareRequest } from '@proman/utils';\nimport { pick } from 'lodash';\nimport { FilterService } from '@proman/services/filter.service';\nimport { ToastService } from '@proman/services/toast.service';\nimport { PromanStateService } from '@frontend/shared/services/proman-state.service';\nimport { SaleOpportunity } from '@proman/interfaces/entity-interfaces';\nimport { Dialog } from '@frontend/shared/services/dialog.service';\nimport moment from 'moment';\n\n@Injectable({ providedIn: 'root' })\nexport class SaleOpportunitiesService {\n\n public statuses: string[] = [\n 'active',\n 'won',\n 'archived',\n 'lost'\n ];\n customersQuery: any = { sort: { name: 'asc' } };\n\n saleOpportunityEntity: any;\n\n constructor(\n private promanState: PromanStateService,\n private Entity: Entity,\n private Filter: FilterService,\n private Toast: ToastService,\n private Dialog: Dialog,\n private UiPrefs: UiPreferencesService,\n ) {\n this.saleOpportunityEntity = this.Entity.get('sale_opportunity');\n }\n\n archive = (item: any) => {\n return new Promise((resolve) => {\n resolve(\n this.saleOpportunityEntity\n .update({\n id: item.id,\n status: this.statuses[2]\n })\n .then(() => {\n this.Toast.pop('success', 'moved_to_archive');\n this.promanState.to('SaleOpportunities');\n })\n )\n });\n };\n\n createOrder = (item: SaleOpportunity, newTab?: boolean) => {\n let data: any = prepareRequest(pick(item, ['name', 'manager', 'customer']));\n\n data.managerComments = item.comments;\n data.title = `${item.id} - ${item.name} - ${this.Filter.date(moment())}`;\n data.sale = item.id;\n\n return this.Entity.get('order_proposal')\n .create(data)\n .then((response: any) => {\n this.UiPrefs.set('activeOrderProposal', response.data);\n\n this.promanState.to('OrderCreate', null, { saleOpportunityId: item.id }, newTab);\n });\n };\n\n getStatuses() {\n let formattedStatuses = [];\n\n for (let status of this.statuses) {\n formattedStatuses.push({\n id: status,\n name: this.Filter.translate(status),\n type: status\n });\n }\n\n return formattedStatuses;\n };\n\n}\n", "import { Injectable } from '@angular/core';\nimport { FilterService } from '@proman/services/filter.service';\nimport { CurrUser, TableField } from '@proman/interfaces/object-interfaces';\nimport { Invoice, InvoiceRecord, Order } from '@proman/interfaces/entity-interfaces';\nimport { LocalStorageService } from '@proman/services/local-storage.service';\nimport { roundNumber, safeMap } from '@proman/utils';\nimport { Money } from '@proman/interfaces/common.interface';\nimport moment from 'moment';\nimport { Store } from '@ngrx/store';\nimport { getCurrUser } from '@proman/store/curr-user';\n\nexport const INVOICE_DIALOG_WIDTH: string = '1200px';\n\n@Injectable()\nexport class InvoicesService {\n currUser: CurrUser;\n\n constructor(\n private Filter: FilterService,\n private LocalStorage: LocalStorageService,\n private store: Store,\n ) {\n this.store.select(getCurrUser).subscribe((val) => this.currUser = val);\n }\n\n translateIsPaid = (invoice: Invoice) => {\n return this.Filter.translate(invoice.isPaid ? 'yes' : 'no');\n };\n\n translateIsProforma = (invoice: Invoice) => {\n return this.Filter.translate(invoice.type);\n };\n\n translateIsOverdue = (invoice: Invoice) => {\n return this.Filter.translate(invoice.isOverdue ? 'yes' : 'no');\n };\n\n translateIsInvalidated = (invoice: Invoice) => {\n return this.Filter.translate(invoice.isInvalidated ? 'yes' : 'no');\n };\n\n getRegion = (invoice: Invoice) => {\n return invoice?.customer?.country?.regions? safeMap(invoice.customer.country.regions, 'name').join(', ') : '';\n };\n\n getDates = (row: Invoice) => {\n return row.payments.length > 0 ?\n row.payments.map((payment) => this.Filter.date(payment.date)).join(', ') :\n this.Filter.date(row.paidAt);\n }\n\n getProducts = (invoice: Invoice) => {\n return invoice.records.map((record) => record.name).join(', ');\n };\n\n localStorageValue = (key: string) => {\n return this.LocalStorage.getObject('uiPrefs.ss.entityTable')['invoices']['fields'].filter((e: any) => e.key === key).length > 0;\n }\n\n getFields = (): TableField[] => {\n if (this.currUser.bookkeepingUser) {\n return [\n {\n name: 'date',\n key: 'date',\n formatter: 'dateTime',\n showTime: false,\n },\n {\n name: 'invoice_number',\n key: 'number'\n },\n {\n name: 'customer',\n key: 'customer.alias'\n },\n {\n name: 'sum',\n key: 'sumLocalCurrency',\n stats: ['sum'],\n formatter: 'money',\n },\n {\n name: 'vat_sum',\n key: 'sumLocalCurrencyVat',\n formatter: 'money',\n stats: ['sum'],\n },\n {\n name: 'remnant',\n key: 'remnant',\n getValue: this.unpaidDifference,\n stats: ['sum'],\n formatter: 'money'\n },\n {\n name: 'proforma',\n key: 'type',\n getValue: this.translateIsProforma,\n filter: {\n type: 'dropdown',\n options: [\n {\n id: 'proforma',\n name: this.Filter.translate('proforma')\n },\n {\n id: 'invoice',\n name: this.Filter.translate('invoice')\n },\n {\n id: 'draft',\n name: this.Filter.translate('draft')\n }\n ],\n key: 'id',\n value: 'invoice',\n userValueExpiry: 1000 * 60 * 60\n }\n },\n {\n name: 'created_by',\n key: 'createdBy.name',\n },\n {\n name: 'late_interest',\n key: 'lateInterest',\n filter: null,\n sort: null,\n formatter: 'money',\n stats: ['sum'],\n getValue: (row: Invoice) => {\n if (row.customer.lateInterestPercentage) {\n const deadline = moment(row.deadline);\n const today = moment();\n const amount = +row.sumWithVat.amount * (+row.customer.lateInterestPercentage / 100) * today.diff(deadline, 'days');\n return { currency: row.sumWithVat.currency, amount};\n } else {\n return { currency: row.sumWithVat.currency, amount: 0 };\n }\n }\n }\n ];\n }\n\n return [\n {\n name: 'date',\n key: 'date',\n formatter: 'dateTime',\n showTime: false,\n },\n {\n name: 'payment_deadline',\n key: 'deadline',\n formatter: 'dateTime',\n hidden: true\n },\n {\n name: 'paid_at',\n key: 'paidAt',\n formatter: 'dateTime',\n hidden: true\n },\n {\n name: 'payments',\n key: 'payments',\n formatter: 'dateTime',\n getValue: this.getDates,\n hidden: true\n },\n {\n name: 'is_paid',\n key: 'isPaid',\n getValue: this.translateIsPaid,\n filter: {\n type: 'dropdown',\n options: [\n {\n id: true,\n name: this.Filter.translate('yes')\n },\n {\n id: false,\n name: this.Filter.translate('no')\n }\n ],\n key: 'id'\n },\n hidden: true\n },\n {\n name: 'invoice_number',\n key: 'number'\n },\n {\n name: 'id',\n key: 'id',\n hidden: true,\n },\n {\n name: 'customer_name',\n key: 'customer.name',\n hidden: true,\n },\n {\n name: 'customer_registration_code',\n key: 'customer.registrationCode',\n hidden: true,\n },\n {\n name: 'customer_vat_code',\n key: 'customer.vatCode',\n hidden: true,\n },\n {\n name: 'customer',\n key: 'customer.alias'\n },\n {\n name: 'region',\n key: 'customer.country.regions',\n getValue: this.getRegion,\n sort: false,\n filter: {\n type: 'autocomplete',\n entity: 'region'\n },\n extraJoins: [\n 'customer.country',\n 'customer.country.regions'\n ],\n hidden: true\n },\n {\n name: 'country',\n key: 'customer.country.name',\n extraJoins: ['customer.country'],\n hidden: true,\n },\n {\n name: 'order_ids',\n key: 'relatedOrders',\n getValue: (row: Invoice) => [...new Set(row.relatedOrders || [])].join(','),\n filter: {\n type: 'search',\n keys: ['records.order.name', 'records.order.id'],\n },\n hidden: true,\n },\n {\n name: 'order_names',\n key: 'records.order.name',\n getValue: (row: Invoice) => {\n const orders = row.records.filter((record) => !!record.order).map((record) => record.order);\n const orderMap: { [key: number]: Order } = orders.reduce((a, b) => {a[b.id] = b; return a; }, {});\n return Object.keys(orderMap).map((id) => orderMap[id].name).join(', ');\n },\n filter: {\n type: 'search',\n keys: ['records.order.name'],\n },\n extraJoins: ['records', 'records.order'],\n },\n {\n name: 'customer_number',\n key: 'records.order.customerNumber',\n getValue: (row: Invoice) => {\n const orders = row.records.filter((record) => !!record.order).map((record) => record.order);\n const orderMap: { [key: number]: Order } = orders.reduce((a, b) => {a[b.id] = b; return a; }, {});\n return Object.keys(orderMap).map((id) => orderMap[id].customerNumber).join(', ');\n },\n extraJoins: ['records', 'records.order'],\n hidden: true\n },\n {\n key: 'records.order.type.name',\n name: 'order_types',\n getValue: (row: Invoice) => {\n const orders = row.records.filter((record) => !!record.order).map((record) => record.order);\n const orderMap: { [key: number]: Order } = orders.reduce((a, b) => {a[b.id] = b; return a; }, {});\n return Object.keys(orderMap).map((id) => orderMap[id].type?.name).join(', ');\n },\n extraJoins: ['records', 'records.order', 'records.order.type'],\n hidden: true,\n },\n {\n name: 'products',\n key: 'records.name',\n getValue: this.getProducts,\n extraJoins: ['records'],\n hidden: true,\n },\n {\n name: 'quantity',\n key: 'quantity',\n stats: ['sum'],\n formatter: 'numeric',\n hidden: true\n },\n {\n name: 'sum',\n key: 'sumLocalCurrency',\n stats: ['sum'],\n formatter: 'money',\n },\n {\n name: 'vat_sum',\n key: 'sumLocalCurrencyVat',\n formatter: 'money',\n stats: ['sum'],\n },\n {\n name: 'discount',\n key: 'discount',\n formatter: 'money',\n stats: ['sum'],\n },\n {\n name: 'transport_price',\n key: 'transportPrice',\n formatter: 'money',\n stats: ['sum'],\n },\n {\n name: 'sum_local_currency_with_vat',\n key: 'sumLocalCurrencyWithVat',\n stats: ['sum'],\n formatter: 'money',\n },\n {\n name: 'sum_in_foreign_currency',\n key: 'sumWithVat',\n stats: ['sum'],\n formatter: 'money',\n },\n {\n name: 'commission',\n key: 'order.commission',\n filter: null,\n getValue: this.getCommission,\n formatter: 'money',\n formatterConfig: 2,\n stats: ['sum'],\n extraJoins: ['records', 'records.order'],\n },\n {\n name: 'paid_amount',\n key: 'paidAmount',\n filter: null,\n stats: ['sum'],\n sort: false,\n getValue: (row: Invoice) => ({ amount: row.payments.reduce((i, a) => i + +a.sum.amount, 0), currency: row.sumWithVat.currency }),\n formatter: 'money',\n },\n {\n name: 'remnant',\n key: 'remnant',\n getValue: this.unpaidDifference,\n stats: ['sum'],\n formatter: 'money'\n },\n {\n name: 'proforma',\n key: 'type',\n getValue: this.translateIsProforma,\n filter: {\n type: 'dropdown',\n options: [\n {\n id: 'proforma',\n name: this.Filter.translate('proforma')\n },\n {\n id: 'invoice',\n name: this.Filter.translate('invoice')\n },\n {\n id: 'draft',\n name: this.Filter.translate('draft')\n }\n ],\n key: 'id',\n value: 'invoice',\n userValueExpiry: 1000 * 60 * 60\n }\n },\n {\n name: 'is_invalidated',\n key: 'isInvalidated',\n getValue: this.translateIsInvalidated,\n filter: {\n type: 'dropdown',\n options: [\n {\n id: true,\n name: this.Filter.translate('yes')\n },\n {\n id: false,\n name: this.Filter.translate('no')\n }\n ],\n value: false,\n userValueExpiry: 1000 * 60 * 60,\n key: 'id'\n }\n },\n {\n name: 'is_overdue',\n key: 'isOverdue',\n getValue: this.translateIsOverdue,\n filter: {\n type: 'dropdown',\n options: [\n {\n id: true,\n name: this.Filter.translate('yes')\n },\n {\n id: false,\n name: this.Filter.translate('no')\n }\n ],\n key: 'id'\n },\n hidden: true\n },\n {\n name: 'created_by',\n key: 'createdBy.name',\n },\n {\n name: 'late_interest',\n key: 'lateInterest',\n filter: null,\n sort: null,\n formatter: 'money',\n stats: ['sum'],\n getValue: (row: Invoice) => {\n if (row.customer.lateInterestPercentage) {\n const deadline = moment(row.deadline);\n const today = moment();\n const amount = +row.sumWithVat.amount * (+row.customer.lateInterestPercentage / 100) * today.diff(deadline, 'days');\n return { currency: row.sumWithVat.currency, amount};\n } else {\n return { currency: row.sumWithVat.currency, amount: 0 };\n }\n }\n }\n ];\n };\n\n getCommission = (invoice: Invoice): Money => {\n let commission = 0;\n invoice.records?.forEach((record: InvoiceRecord) => {\n if (record.order) {\n const sum = +record.sum.amount * (1 - (record.order?.customerDiscountPercent ?? 0) / 100);\n commission += roundNumber(sum * (record.order?.agentCommissionPercent ?? 0) / 100);\n }\n })\n return {\n amount: commission.toString(),\n currency: invoice.sum.currency\n }\n }\n unpaidDifference = (invoice: Invoice) => {\n return {\n amount: +invoice.sumLocalCurrencyWithVat.amount - +this.paidSum(invoice).amount,\n currency: invoice.sumLocalCurrencyWithVat.currency\n }\n }\n\n paidSum = (invoice: Invoice) => {\n return Object.assign({}, {\n 'amount': invoice.payments?.reduce((a, b) => a + (+b.sum.amount / +invoice.ratioOnCreate), 0) ?? 0,\n 'currency': invoice.sumLocalCurrencyWithVat.currency\n })\n }\n}\n"], "mappings": "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", "names": ["import_lodash", "import_moment", "SaleOpportunitiesService", "constructor", "promanState", "Entity", "Filter", "Toast", "Dialog", "UiPrefs", "statuses", "customersQuery", "sort", "name", "archive", "item", "Promise", "resolve", "saleOpportunityEntity", "update", "id", "status", "then", "pop", "to", "createOrder", "newTab", "data", "prepareRequest", "pick", "managerComments", "comments", "title", "date", "moment", "sale", "get", "create", "response", "set", "saleOpportunityId", "getStatuses", "formattedStatuses", "push", "translate", "type", "\u0275\u0275inject", "PromanStateService", "FilterService", "ToastService", "UiPreferencesService", "factory", "\u0275fac", "providedIn", "_SaleOpportunitiesService", "import_moment", "INVOICE_DIALOG_WIDTH", "InvoicesService", "constructor", "Filter", "LocalStorage", "store", "translateIsPaid", "invoice", "translate", "isPaid", "translateIsProforma", "type", "translateIsOverdue", "isOverdue", "translateIsInvalidated", "isInvalidated", "getRegion", "customer", "country", "regions", "safeMap", "join", "getDates", "row", "payments", "length", "map", "payment", "date", "paidAt", "getProducts", "records", "record", "name", "localStorageValue", "key", "getObject", "filter", "e", "getFields", "currUser", "bookkeepingUser", "formatter", "showTime", "stats", "getValue", "unpaidDifference", "options", "id", "value", "userValueExpiry", "sort", "lateInterestPercentage", "deadline", "moment", "today", "amount", "sumWithVat", "diff", "currency", "hidden", "entity", "extraJoins", "Set", "relatedOrders", "keys", "orderMap", "order", "reduce", "a", "b", "Object", "customerNumber", "getCommission", "formatterConfig", "i", "sum", "commission", "forEach", "customerDiscountPercent", "roundNumber", "agentCommissionPercent", "toString", "sumLocalCurrencyWithVat", "paidSum", "assign", "ratioOnCreate", "select", "getCurrUser", "subscribe", "val", "\u0275\u0275inject", "FilterService", "LocalStorageService", "Store", "factory", "\u0275fac", "_InvoicesService"] }