@hitsoft/kadooglu-keops 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/enums/route-names.d.ts +16 -1
- package/esm2020/config/enums/route-names.mjs +1 -1
- package/esm2020/config/providers/route.provider.mjs +141 -4
- package/esm2020/lib/features/bl-tracking/components/bl-tracking-form.component.mjs +82 -0
- package/esm2020/lib/features/bl-tracking/components/bl-tracking.component.mjs +65 -0
- package/esm2020/lib/features/bl-tracking/hit-bl-tracking-routing.module.mjs +29 -0
- package/esm2020/lib/features/bl-tracking/hit-bl-tracking.module.mjs +58 -0
- package/esm2020/lib/features/carriers/components/carrier-form.component.mjs +78 -0
- package/esm2020/lib/features/carriers/components/carriers.component.mjs +66 -0
- package/esm2020/lib/features/carriers/hit-carriers-routing.module.mjs +29 -0
- package/esm2020/lib/features/carriers/hit-carriers.module.mjs +58 -0
- package/esm2020/lib/features/container-loading-counts/components/container-loading-counts.component.mjs +2 -2
- package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.mjs +6 -5
- package/esm2020/lib/features/cost-calculation/components/cost-calculation-inputs.component.mjs +16 -12
- package/esm2020/lib/features/cost-calculation/components/cost-calculation-results.component.mjs +3 -3
- package/esm2020/lib/features/cost-calculation/components/cost-calculation.component.mjs +90 -39
- package/esm2020/lib/features/cost-calculation/engine/currency.utils.mjs +10 -10
- package/esm2020/lib/features/cost-calculation/engine/formulas.mjs +10 -10
- package/esm2020/lib/features/cost-calculation/engine/item-resolver.mjs +16 -16
- package/esm2020/lib/features/cost-calculation/engine/stage-builder.mjs +11 -10
- package/esm2020/lib/features/cost-calculation/hit-cost-calculation.module.mjs +7 -3
- package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.mjs +3 -7
- package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.mjs +4 -14
- package/esm2020/lib/features/cost-parameters/components/cost-parameter-form.component.mjs +22 -39
- package/esm2020/lib/features/cost-parameters/components/cost-parameters.component.mjs +19 -15
- package/esm2020/lib/features/destination-ports/components/destination-port-form.component.mjs +86 -0
- package/esm2020/lib/features/destination-ports/components/destination-ports.component.mjs +74 -0
- package/esm2020/lib/features/destination-ports/hit-destination-ports-routing.module.mjs +29 -0
- package/esm2020/lib/features/destination-ports/hit-destination-ports.module.mjs +58 -0
- package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.mjs +80 -0
- package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.mjs +65 -0
- package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.mjs +29 -0
- package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.mjs +58 -0
- package/esm2020/lib/features/freight-offers/components/freight-offer-copy.component.mjs +67 -0
- package/esm2020/lib/features/freight-offers/components/freight-offer-form.component.mjs +181 -0
- package/esm2020/lib/features/freight-offers/components/freight-offers.component.mjs +159 -0
- package/esm2020/lib/features/freight-offers/hit-freight-offers-routing.module.mjs +29 -0
- package/esm2020/lib/features/freight-offers/hit-freight-offers.module.mjs +62 -0
- package/esm2020/lib/features/incoterms/components/incoterm-form.component.mjs +81 -0
- package/esm2020/lib/features/incoterms/components/incoterms.component.mjs +65 -0
- package/esm2020/lib/features/incoterms/hit-incoterms-routing.module.mjs +29 -0
- package/esm2020/lib/features/incoterms/hit-incoterms.module.mjs +58 -0
- package/esm2020/lib/features/index.mjs +29 -1
- package/esm2020/lib/features/item-classifications/components/item-classifications.component.mjs +199 -0
- package/esm2020/lib/features/item-classifications/hit-item-classifications-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-classifications/hit-item-classifications.module.mjs +60 -0
- package/esm2020/lib/features/item-package-groups/components/item-package-group-form.component.mjs +78 -0
- package/esm2020/lib/features/item-package-groups/components/item-package-groups.component.mjs +69 -0
- package/esm2020/lib/features/item-package-groups/hit-item-package-groups-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-package-groups/hit-item-package-groups.module.mjs +58 -0
- package/esm2020/lib/features/item-package-types/components/item-package-type-form.component.mjs +78 -0
- package/esm2020/lib/features/item-package-types/components/item-package-types.component.mjs +69 -0
- package/esm2020/lib/features/item-package-types/hit-item-package-types-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-package-types/hit-item-package-types.module.mjs +58 -0
- package/esm2020/lib/features/item-product-types/components/item-product-type-form.component.mjs +78 -0
- package/esm2020/lib/features/item-product-types/components/item-product-types.component.mjs +69 -0
- package/esm2020/lib/features/item-product-types/hit-item-product-types-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-product-types/hit-item-product-types.module.mjs +58 -0
- package/esm2020/lib/features/lines/components/line-form.component.mjs +78 -0
- package/esm2020/lib/features/lines/components/lines.component.mjs +66 -0
- package/esm2020/lib/features/lines/hit-lines-routing.module.mjs +29 -0
- package/esm2020/lib/features/lines/hit-lines.module.mjs +58 -0
- package/esm2020/lib/features/packaging-prices/components/packaging-price-form.component.mjs +4 -9
- package/esm2020/lib/features/packaging-prices/packaging-price-calculator.mjs +1 -1
- package/esm2020/lib/features/pos/components/pos-form.component.mjs +77 -0
- package/esm2020/lib/features/pos/components/pos.component.mjs +65 -0
- package/esm2020/lib/features/pos/hit-pos-routing.module.mjs +29 -0
- package/esm2020/lib/features/pos/hit-pos.module.mjs +58 -0
- package/esm2020/lib/features/price-parameter-types/components/price-parameter-types.component.mjs +3 -3
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-cost-items.component.mjs +32 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.mjs +52 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.mjs +84 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-items.component.mjs +43 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-price-lists.component.mjs +42 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form.component.mjs +320 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-price-update-preview-modal.component.mjs +26 -0
- package/esm2020/lib/features/price-parameters/components/price-parameters.component.mjs +85 -0
- package/esm2020/lib/features/price-parameters/hit-price-parameters-routing.module.mjs +46 -0
- package/esm2020/lib/features/price-parameters/hit-price-parameters.module.mjs +96 -0
- package/esm2020/lib/features/price-parameters/price-parameter-cost-match.service.mjs +21 -0
- package/esm2020/lib/features/price-parameters/price-parameter-form-data.service.mjs +49 -0
- package/esm2020/lib/features/price-parameters/price-parameter-l10n-helper.mjs +7 -0
- package/esm2020/lib/features/price-parameters/price-parameter-lookups.service.mjs +27 -0
- package/esm2020/lib/features/price-parameters/price-parameter-price-update.service.mjs +119 -0
- package/esm2020/lib/features/settings/components/cost-settings.component.mjs +8 -4
- package/esm2020/lib/kadooglu-keops-routing.module.mjs +27 -1
- package/esm2020/lib/shared/amount-currency-input/amount-currency-input.component.mjs +68 -0
- package/esm2020/lib/shared/cost-item-classification.utils.mjs +15 -0
- package/esm2020/lib/shared/cost-item-rows.builder.mjs +40 -0
- package/esm2020/lib/shared/pipes/resolve-code-name.pipe.mjs +16 -0
- package/esm2020/lib/shared/shared-ui.module.mjs +20 -0
- package/esm2020/lib/utils/business-region.utils.mjs +12 -0
- package/esm2020/lib/utils/currency.utils.mjs +5 -1
- package/esm2020/lib/utils/exchange-rate.utils.mjs +12 -0
- package/esm2020/proxy/bl-tracking/dtos/index.mjs +2 -0
- package/esm2020/proxy/bl-tracking/dtos/models.mjs +2 -0
- package/esm2020/proxy/business-partners/dtos/index.mjs +2 -0
- package/esm2020/proxy/business-partners/dtos/models.mjs +2 -0
- package/esm2020/proxy/business-region.enum.mjs +9 -0
- package/esm2020/proxy/carriers/dtos/index.mjs +2 -0
- package/esm2020/proxy/carriers/dtos/models.mjs +2 -0
- package/esm2020/proxy/container-loading-counts/dtos/models.mjs +1 -1
- package/esm2020/proxy/controllers/bl-tracking.service.mjs +36 -0
- package/esm2020/proxy/controllers/business-partner.service.mjs +22 -0
- package/esm2020/proxy/controllers/carrier.service.mjs +36 -0
- package/esm2020/proxy/controllers/container-loading-count.service.mjs +5 -5
- package/esm2020/proxy/controllers/cost-parameter.service.mjs +1 -5
- package/esm2020/proxy/controllers/destination-port.service.mjs +44 -0
- package/esm2020/proxy/controllers/fob-inland-definition.service.mjs +36 -0
- package/esm2020/proxy/controllers/freight-offer.service.mjs +57 -0
- package/esm2020/proxy/controllers/incoterm.service.mjs +36 -0
- package/esm2020/proxy/controllers/index.mjs +16 -1
- package/esm2020/proxy/controllers/item-classification.service.mjs +42 -0
- package/esm2020/proxy/controllers/item-package-group.service.mjs +40 -0
- package/esm2020/proxy/controllers/item-package-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/item-product-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/item.service.mjs +7 -3
- package/esm2020/proxy/controllers/line.service.mjs +36 -0
- package/esm2020/proxy/controllers/pos.service.mjs +36 -0
- package/esm2020/proxy/controllers/price-list.service.mjs +28 -0
- package/esm2020/proxy/controllers/price-parameter.service.mjs +45 -0
- package/esm2020/proxy/cost-parameter-categories/dtos/models.mjs +1 -1
- package/esm2020/proxy/cost-parameters/dtos/models.mjs +1 -1
- package/esm2020/proxy/destination-ports/dtos/index.mjs +2 -0
- package/esm2020/proxy/destination-ports/dtos/models.mjs +2 -0
- package/esm2020/proxy/fob-inland-definitions/dtos/index.mjs +2 -0
- package/esm2020/proxy/fob-inland-definitions/dtos/models.mjs +2 -0
- package/esm2020/proxy/freight-offers/dtos/index.mjs +2 -0
- package/esm2020/proxy/freight-offers/dtos/models.mjs +2 -0
- package/esm2020/proxy/incoterms/dtos/index.mjs +2 -0
- package/esm2020/proxy/incoterms/dtos/models.mjs +2 -0
- package/esm2020/proxy/item-classifications/dtos/index.mjs +2 -0
- package/esm2020/proxy/item-classifications/dtos/models.mjs +2 -0
- package/esm2020/proxy/item-package-groups/dtos/index.mjs +2 -0
- package/esm2020/proxy/item-package-groups/dtos/models.mjs +2 -0
- package/esm2020/proxy/item-package-types/dtos/index.mjs +2 -0
- package/esm2020/proxy/item-package-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/item-product-types/dtos/index.mjs +2 -0
- package/esm2020/proxy/item-product-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/lines/dtos/index.mjs +2 -0
- package/esm2020/proxy/lines/dtos/models.mjs +2 -0
- package/esm2020/proxy/pos/dtos/index.mjs +2 -0
- package/esm2020/proxy/pos/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-lists/dtos/index.mjs +2 -0
- package/esm2020/proxy/price-lists/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-parameters/dtos/index.mjs +2 -0
- package/esm2020/proxy/price-parameters/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-parameters/price-parameter-status.enum.mjs +9 -0
- package/esm2020/proxy/public-api.mjs +18 -2
- package/esm2020/proxy/settings/models.mjs +1 -1
- package/fesm2015/hitsoft-kadooglu-keops-config.mjs +140 -3
- package/fesm2015/hitsoft-kadooglu-keops-config.mjs.map +1 -1
- package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs +556 -21
- package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs.map +1 -1
- package/fesm2015/hitsoft-kadooglu-keops.mjs +4510 -763
- package/fesm2015/hitsoft-kadooglu-keops.mjs.map +1 -1
- package/fesm2020/hitsoft-kadooglu-keops-config.mjs +140 -3
- package/fesm2020/hitsoft-kadooglu-keops-config.mjs.map +1 -1
- package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs +556 -21
- package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs.map +1 -1
- package/fesm2020/hitsoft-kadooglu-keops.mjs +4462 -732
- package/fesm2020/hitsoft-kadooglu-keops.mjs.map +1 -1
- package/lib/features/bl-tracking/components/bl-tracking-form.component.d.ts +24 -0
- package/lib/features/bl-tracking/components/bl-tracking.component.d.ts +22 -0
- package/lib/features/bl-tracking/hit-bl-tracking-routing.module.d.ts +7 -0
- package/lib/features/bl-tracking/hit-bl-tracking.module.d.ts +18 -0
- package/lib/features/carriers/components/carrier-form.component.d.ts +24 -0
- package/lib/features/carriers/components/carriers.component.d.ts +22 -0
- package/lib/features/carriers/hit-carriers-routing.module.d.ts +7 -0
- package/lib/features/carriers/hit-carriers.module.d.ts +18 -0
- package/lib/features/container-loading-counts/components/container-loading-counts.component.d.ts +2 -2
- package/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.d.ts +1 -1
- package/lib/features/cost-calculation/components/cost-calculation-inputs.component.d.ts +10 -7
- package/lib/features/cost-calculation/components/cost-calculation.component.d.ts +16 -8
- package/lib/features/cost-calculation/engine/currency.utils.d.ts +2 -2
- package/lib/features/cost-calculation/engine/formulas.d.ts +2 -2
- package/lib/features/cost-calculation/hit-cost-calculation.module.d.ts +2 -1
- package/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.d.ts +0 -1
- package/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.d.ts +1 -5
- package/lib/features/cost-parameters/components/cost-parameter-form.component.d.ts +10 -7
- package/lib/features/cost-parameters/components/cost-parameters.component.d.ts +6 -6
- package/lib/features/destination-ports/components/destination-port-form.component.d.ts +25 -0
- package/lib/features/destination-ports/components/destination-ports.component.d.ts +24 -0
- package/lib/features/destination-ports/hit-destination-ports-routing.module.d.ts +7 -0
- package/lib/features/destination-ports/hit-destination-ports.module.d.ts +18 -0
- package/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.d.ts +24 -0
- package/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.d.ts +22 -0
- package/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.d.ts +7 -0
- package/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.d.ts +18 -0
- package/lib/features/freight-offers/components/freight-offer-copy.component.d.ts +22 -0
- package/lib/features/freight-offers/components/freight-offer-form.component.d.ts +49 -0
- package/lib/features/freight-offers/components/freight-offers.component.d.ts +47 -0
- package/lib/features/freight-offers/hit-freight-offers-routing.module.d.ts +7 -0
- package/lib/features/freight-offers/hit-freight-offers.module.d.ts +19 -0
- package/lib/features/incoterms/components/incoterm-form.component.d.ts +24 -0
- package/lib/features/incoterms/components/incoterms.component.d.ts +22 -0
- package/lib/features/incoterms/hit-incoterms-routing.module.d.ts +7 -0
- package/lib/features/incoterms/hit-incoterms.module.d.ts +18 -0
- package/lib/features/index.d.ts +21 -0
- package/lib/features/item-classifications/components/item-classifications.component.d.ts +66 -0
- package/lib/features/item-classifications/hit-item-classifications-routing.module.d.ts +7 -0
- package/lib/features/item-classifications/hit-item-classifications.module.d.ts +17 -0
- package/lib/features/item-package-groups/components/item-package-group-form.component.d.ts +24 -0
- package/lib/features/item-package-groups/components/item-package-groups.component.d.ts +22 -0
- package/lib/features/item-package-groups/hit-item-package-groups-routing.module.d.ts +7 -0
- package/lib/features/item-package-groups/hit-item-package-groups.module.d.ts +18 -0
- package/lib/features/item-package-types/components/item-package-type-form.component.d.ts +24 -0
- package/lib/features/item-package-types/components/item-package-types.component.d.ts +22 -0
- package/lib/features/item-package-types/hit-item-package-types-routing.module.d.ts +7 -0
- package/lib/features/item-package-types/hit-item-package-types.module.d.ts +18 -0
- package/lib/features/item-product-types/components/item-product-type-form.component.d.ts +24 -0
- package/lib/features/item-product-types/components/item-product-types.component.d.ts +22 -0
- package/lib/features/item-product-types/hit-item-product-types-routing.module.d.ts +7 -0
- package/lib/features/item-product-types/hit-item-product-types.module.d.ts +18 -0
- package/lib/features/lines/components/line-form.component.d.ts +24 -0
- package/lib/features/lines/components/lines.component.d.ts +22 -0
- package/lib/features/lines/hit-lines-routing.module.d.ts +7 -0
- package/lib/features/lines/hit-lines.module.d.ts +18 -0
- package/lib/features/pos/components/pos-form.component.d.ts +24 -0
- package/lib/features/pos/components/pos.component.d.ts +22 -0
- package/lib/features/pos/hit-pos-routing.module.d.ts +7 -0
- package/lib/features/pos/hit-pos.module.d.ts +18 -0
- package/lib/features/price-parameters/components/price-parameter-form-cost-items.component.d.ts +15 -0
- package/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.d.ts +24 -0
- package/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.d.ts +22 -0
- package/lib/features/price-parameters/components/price-parameter-form-items.component.d.ts +15 -0
- package/lib/features/price-parameters/components/price-parameter-form-price-lists.component.d.ts +15 -0
- package/lib/features/price-parameters/components/price-parameter-form.component.d.ts +77 -0
- package/lib/features/price-parameters/components/price-parameter-price-update-preview-modal.component.d.ts +11 -0
- package/lib/features/price-parameters/components/price-parameters.component.d.ts +30 -0
- package/lib/features/price-parameters/hit-price-parameters-routing.module.d.ts +7 -0
- package/lib/features/price-parameters/hit-price-parameters.module.d.ts +25 -0
- package/lib/features/price-parameters/price-parameter-cost-match.service.d.ts +10 -0
- package/lib/features/price-parameters/price-parameter-form-data.service.d.ts +25 -0
- package/lib/features/price-parameters/price-parameter-l10n-helper.d.ts +2 -0
- package/lib/features/price-parameters/price-parameter-lookups.service.d.ts +15 -0
- package/lib/features/price-parameters/price-parameter-price-update.service.d.ts +30 -0
- package/lib/shared/amount-currency-input/amount-currency-input.component.d.ts +23 -0
- package/lib/shared/cost-item-classification.utils.d.ts +11 -0
- package/lib/shared/cost-item-rows.builder.d.ts +11 -0
- package/lib/shared/pipes/resolve-code-name.pipe.d.ts +11 -0
- package/lib/shared/shared-ui.module.d.ts +10 -0
- package/lib/utils/business-region.utils.d.ts +7 -0
- package/lib/utils/currency.utils.d.ts +2 -0
- package/lib/utils/exchange-rate.utils.d.ts +2 -0
- package/package.json +1 -1
- package/proxy/bl-tracking/dtos/index.d.ts +1 -0
- package/proxy/bl-tracking/dtos/models.d.ts +25 -0
- package/proxy/business-partners/dtos/index.d.ts +1 -0
- package/proxy/business-partners/dtos/models.d.ts +4 -0
- package/proxy/business-region.enum.d.ts +6 -0
- package/proxy/carriers/dtos/index.d.ts +1 -0
- package/proxy/carriers/dtos/models.d.ts +10 -0
- package/proxy/container-loading-counts/dtos/models.d.ts +1 -1
- package/proxy/controllers/bl-tracking.service.d.ts +14 -0
- package/proxy/controllers/business-partner.service.d.ts +11 -0
- package/proxy/controllers/carrier.service.d.ts +14 -0
- package/proxy/controllers/container-loading-count.service.d.ts +2 -2
- package/proxy/controllers/cost-parameter.service.d.ts +1 -2
- package/proxy/controllers/destination-port.service.d.ts +17 -0
- package/proxy/controllers/fob-inland-definition.service.d.ts +14 -0
- package/proxy/controllers/freight-offer.service.d.ts +19 -0
- package/proxy/controllers/incoterm.service.d.ts +14 -0
- package/proxy/controllers/index.d.ts +15 -0
- package/proxy/controllers/item-classification.service.d.ts +17 -0
- package/proxy/controllers/item-package-group.service.d.ts +15 -0
- package/proxy/controllers/item-package-type.service.d.ts +15 -0
- package/proxy/controllers/item-product-type.service.d.ts +15 -0
- package/proxy/controllers/item.service.d.ts +3 -1
- package/proxy/controllers/line.service.d.ts +14 -0
- package/proxy/controllers/pos.service.d.ts +14 -0
- package/proxy/controllers/price-list.service.d.ts +13 -0
- package/proxy/controllers/price-parameter.service.d.ts +16 -0
- package/proxy/cost-parameter-categories/dtos/models.d.ts +0 -4
- package/proxy/cost-parameters/dtos/models.d.ts +4 -11
- package/proxy/destination-ports/dtos/index.d.ts +1 -0
- package/proxy/destination-ports/dtos/models.d.ts +19 -0
- package/proxy/fob-inland-definitions/dtos/index.d.ts +1 -0
- package/proxy/fob-inland-definitions/dtos/models.d.ts +19 -0
- package/proxy/freight-offers/dtos/index.d.ts +1 -0
- package/proxy/freight-offers/dtos/models.d.ts +66 -0
- package/proxy/incoterms/dtos/index.d.ts +1 -0
- package/proxy/incoterms/dtos/models.d.ts +22 -0
- package/proxy/item-classifications/dtos/index.d.ts +1 -0
- package/proxy/item-classifications/dtos/models.d.ts +34 -0
- package/proxy/item-package-groups/dtos/index.d.ts +1 -0
- package/proxy/item-package-groups/dtos/models.d.ts +13 -0
- package/proxy/item-package-types/dtos/index.d.ts +1 -0
- package/proxy/item-package-types/dtos/models.d.ts +13 -0
- package/proxy/item-product-types/dtos/index.d.ts +1 -0
- package/proxy/item-product-types/dtos/models.d.ts +13 -0
- package/proxy/lines/dtos/index.d.ts +1 -0
- package/proxy/lines/dtos/models.d.ts +10 -0
- package/proxy/pos/dtos/index.d.ts +1 -0
- package/proxy/pos/dtos/models.d.ts +10 -0
- package/proxy/price-lists/dtos/index.d.ts +1 -0
- package/proxy/price-lists/dtos/models.d.ts +10 -0
- package/proxy/price-parameters/dtos/index.d.ts +1 -0
- package/proxy/price-parameters/dtos/models.d.ts +104 -0
- package/proxy/price-parameters/price-parameter-status.enum.d.ts +6 -0
- package/proxy/public-api.d.ts +17 -1
- package/proxy/settings/models.d.ts +1 -0
- package/esm2020/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.mjs +0 -9
- package/esm2020/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +0 -11
- package/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.d.ts +0 -2
- package/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.d.ts +0 -8
|
@@ -2,30 +2,37 @@ import { Component, ViewEncapsulation } from '@angular/core';
|
|
|
2
2
|
import { forkJoin } from 'rxjs';
|
|
3
3
|
import DataSource from 'devextreme/data/data_source';
|
|
4
4
|
import ArrayStore from 'devextreme/data/array_store';
|
|
5
|
-
import {
|
|
5
|
+
import { CostItemSystemCode, Currency, } from '@hitsoft/kadooglu-keops/proxy';
|
|
6
6
|
import { buildRoleGroups, calculateCost } from '../engine';
|
|
7
|
+
import { toAmount } from '../engine/currency.utils';
|
|
7
8
|
import { parseDecimal } from '../../../utils/number.utils';
|
|
9
|
+
import { resolveSystemRates } from '../../../utils/exchange-rate.utils';
|
|
10
|
+
import { isRateCostItem } from '../../../shared/cost-item-classification.utils';
|
|
11
|
+
import { businessRegionLabels } from '../../../utils/business-region.utils';
|
|
8
12
|
import * as i0 from "@angular/core";
|
|
9
13
|
import * as i1 from "@hitsoft/kadooglu-keops/proxy";
|
|
10
|
-
import * as i2 from "
|
|
11
|
-
import * as i3 from "
|
|
12
|
-
import * as i4 from "
|
|
13
|
-
import * as i5 from "./cost-calculation-
|
|
14
|
-
import * as i6 from "
|
|
14
|
+
import * as i2 from "../../price-parameters/price-parameter-lookups.service";
|
|
15
|
+
import * as i3 from "@abp/ng.core";
|
|
16
|
+
import * as i4 from "@abp/ng.components/page";
|
|
17
|
+
import * as i5 from "./cost-calculation-inputs.component";
|
|
18
|
+
import * as i6 from "./cost-calculation-results.component";
|
|
19
|
+
import * as i7 from "./cost-calculation-result-sum.component";
|
|
15
20
|
export class CostCalculationComponent {
|
|
16
|
-
constructor(parameterService, costItemService, costGroupService, exchangeRateService, itemService) {
|
|
21
|
+
constructor(parameterService, priceParameterLookupsService, costItemService, costGroupService, exchangeRateService, itemService, localization) {
|
|
17
22
|
this.parameterService = parameterService;
|
|
23
|
+
this.priceParameterLookupsService = priceParameterLookupsService;
|
|
18
24
|
this.costItemService = costItemService;
|
|
19
25
|
this.costGroupService = costGroupService;
|
|
20
26
|
this.exchangeRateService = exchangeRateService;
|
|
21
27
|
this.itemService = itemService;
|
|
28
|
+
this.localization = localization;
|
|
22
29
|
this.itemCodePrefix = '05';
|
|
23
30
|
this.productItems = [];
|
|
24
31
|
this.itemsDataSource = null;
|
|
25
32
|
this.selectedItemCode = null;
|
|
26
33
|
this.selectedItemName = null;
|
|
27
34
|
this.parameters = [];
|
|
28
|
-
this.
|
|
35
|
+
this.selectedParameterDocEntry = null;
|
|
29
36
|
this.rawOilPrice = 0;
|
|
30
37
|
this.rawOilCurrency = Currency.USD;
|
|
31
38
|
this.systemRateUsd = 0;
|
|
@@ -35,10 +42,11 @@ export class CostCalculationComponent {
|
|
|
35
42
|
this.stages = [];
|
|
36
43
|
this.result = null;
|
|
37
44
|
this.roleGroups = [];
|
|
45
|
+
this.packagingBaseTry = 0;
|
|
38
46
|
this.costItemsByCode = new Map();
|
|
39
47
|
this.groups = [];
|
|
40
48
|
this.productGroupNames = new Map();
|
|
41
|
-
this.
|
|
49
|
+
this.typeNames = new Map();
|
|
42
50
|
this.itemDisplayExpr = (item) => item ? [item.code, item.name].filter(Boolean).join(' — ') : '';
|
|
43
51
|
this.parameterDisplayExpr = (p) => p ? this.parameterLabel(p) : '';
|
|
44
52
|
}
|
|
@@ -49,25 +57,18 @@ export class CostCalculationComponent {
|
|
|
49
57
|
costItems: this.costItemService.getList(),
|
|
50
58
|
groups: this.costGroupService.getList(),
|
|
51
59
|
rate: this.exchangeRateService.get(),
|
|
52
|
-
lookups: this.
|
|
53
|
-
|
|
54
|
-
}).subscribe(({ parameters, costItems, groups, rate, lookups, items }) => {
|
|
60
|
+
lookups: this.priceParameterLookupsService.loadTypeAndCategoryLookups(),
|
|
61
|
+
}).subscribe(({ parameters, costItems, groups, rate, lookups }) => {
|
|
55
62
|
this.parameters = parameters ?? [];
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
store: new ArrayStore({ key: 'code', data: this.productItems }),
|
|
59
|
-
paginate: true,
|
|
60
|
-
pageSize: 50,
|
|
61
|
-
});
|
|
62
|
-
this.productGroupNames = this.toNameMap(lookups?.productGroups);
|
|
63
|
-
this.regionNames = this.toNameMap(lookups?.regions);
|
|
63
|
+
this.productGroupNames = this.toNameMap(lookups.groupOptions);
|
|
64
|
+
this.typeNames = this.toNameMap(lookups.typeOptions);
|
|
64
65
|
this.costItemsByCode = new Map();
|
|
65
66
|
for (const ci of costItems ?? []) {
|
|
66
67
|
if (ci.code)
|
|
67
68
|
this.costItemsByCode.set(ci.code, ci);
|
|
68
69
|
}
|
|
69
70
|
this.groups = (groups ?? []).slice().sort((a, b) => a.displayOrder - b.displayOrder);
|
|
70
|
-
const [usd, eur] =
|
|
71
|
+
const [usd, eur] = resolveSystemRates(rate);
|
|
71
72
|
this.systemRateUsd = usd;
|
|
72
73
|
this.systemRateEur = eur;
|
|
73
74
|
this.rateUsd = usd;
|
|
@@ -76,13 +77,42 @@ export class CostCalculationComponent {
|
|
|
76
77
|
});
|
|
77
78
|
}
|
|
78
79
|
parameterLabel(p) {
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
80
|
+
const groupName = this.productGroupNames.get(p.groupCode ?? '') ?? p.groupCode;
|
|
81
|
+
const typeName = this.typeNames.get(p.typeCode ?? '') ?? p.typeCode;
|
|
82
|
+
const region = this.localization.instant(businessRegionLabels[p.region]);
|
|
83
|
+
return [typeName, groupName, region].filter(Boolean).join(' — ') || String(p.docEntry ?? '');
|
|
82
84
|
}
|
|
83
85
|
onItemChange() {
|
|
84
86
|
const item = this.productItems.find(x => x.code === this.selectedItemCode);
|
|
85
87
|
this.selectedItemName = item?.name ?? null;
|
|
88
|
+
this.loadPackagingCost();
|
|
89
|
+
}
|
|
90
|
+
loadPackagingCost() {
|
|
91
|
+
if (!this.selectedItemCode) {
|
|
92
|
+
this.packagingBaseTry = 0;
|
|
93
|
+
this.calculate();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.itemService.getPackagingCost(this.selectedItemCode).subscribe(amount => {
|
|
97
|
+
this.packagingBaseTry = amount ?? 0;
|
|
98
|
+
this.calculate();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
findPackagingItem() {
|
|
102
|
+
for (const stage of this.stages) {
|
|
103
|
+
const found = stage.items.find(item => item.systemCode === CostItemSystemCode.Packaging);
|
|
104
|
+
if (found)
|
|
105
|
+
return found;
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
applyPackagingAmount() {
|
|
110
|
+
const item = this.findPackagingItem();
|
|
111
|
+
if (!item)
|
|
112
|
+
return;
|
|
113
|
+
const amounts = toAmount(this.packagingBaseTry, this.rateUsd, this.rateEur);
|
|
114
|
+
item.value =
|
|
115
|
+
item.currency === Currency.TRY ? amounts.try : item.currency === Currency.EUR ? amounts.eur : amounts.usd;
|
|
86
116
|
}
|
|
87
117
|
toNameMap(options) {
|
|
88
118
|
const map = new Map();
|
|
@@ -93,10 +123,38 @@ export class CostCalculationComponent {
|
|
|
93
123
|
return map;
|
|
94
124
|
}
|
|
95
125
|
onParameterChange() {
|
|
96
|
-
const parameter = this.parameters.find(p => p.
|
|
126
|
+
const parameter = this.parameters.find(p => p.docEntry === this.selectedParameterDocEntry);
|
|
97
127
|
this.stages = parameter ? this.buildStages(parameter) : [];
|
|
128
|
+
this.selectedItemCode = null;
|
|
129
|
+
this.selectedItemName = null;
|
|
130
|
+
this.packagingBaseTry = 0;
|
|
131
|
+
if (parameter) {
|
|
132
|
+
this.rawOilPrice = parameter.rawOilPrice ?? 0;
|
|
133
|
+
this.rawOilCurrency = parameter.rawOilCurrency ?? Currency.USD;
|
|
134
|
+
this.rateUsd = parameter.exchangeRateUsd || this.systemRateUsd;
|
|
135
|
+
this.rateEur = parameter.exchangeRateEur || this.systemRateEur;
|
|
136
|
+
this.loadProductItems(parameter.region, parameter.groupCode);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.productItems = [];
|
|
140
|
+
this.itemsDataSource = new DataSource({
|
|
141
|
+
store: new ArrayStore({ key: 'code', data: [] }),
|
|
142
|
+
paginate: true,
|
|
143
|
+
pageSize: 50,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
98
146
|
this.calculate();
|
|
99
147
|
}
|
|
148
|
+
loadProductItems(region, groupCode) {
|
|
149
|
+
this.itemService.getList(this.itemCodePrefix, region, groupCode).subscribe(items => {
|
|
150
|
+
this.productItems = items ?? [];
|
|
151
|
+
this.itemsDataSource = new DataSource({
|
|
152
|
+
store: new ArrayStore({ key: 'code', data: this.productItems }),
|
|
153
|
+
paginate: true,
|
|
154
|
+
pageSize: 50,
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
100
158
|
buildValuesByCode(parameter) {
|
|
101
159
|
const map = new Map();
|
|
102
160
|
for (const item of parameter.items ?? []) {
|
|
@@ -115,7 +173,7 @@ export class CostCalculationComponent {
|
|
|
115
173
|
if (!costItem)
|
|
116
174
|
continue;
|
|
117
175
|
const stored = valuesByCode.get(code);
|
|
118
|
-
const isRate = costItem
|
|
176
|
+
const isRate = isRateCostItem(costItem);
|
|
119
177
|
items.push({
|
|
120
178
|
costItemCode: code,
|
|
121
179
|
costItemName: costItem.name ?? code,
|
|
@@ -135,6 +193,7 @@ export class CostCalculationComponent {
|
|
|
135
193
|
});
|
|
136
194
|
}
|
|
137
195
|
calculate() {
|
|
196
|
+
this.applyPackagingAmount();
|
|
138
197
|
this.result = calculateCost({
|
|
139
198
|
rawOilPrice: parseDecimal(this.rawOilPrice),
|
|
140
199
|
rawOilCurrency: this.rawOilCurrency,
|
|
@@ -147,19 +206,11 @@ export class CostCalculationComponent {
|
|
|
147
206
|
print() {
|
|
148
207
|
window.print();
|
|
149
208
|
}
|
|
150
|
-
resolveRates(rate) {
|
|
151
|
-
if (!rate)
|
|
152
|
-
return [0, 0];
|
|
153
|
-
if (rate.source === ExchangeRateSource.Fixed) {
|
|
154
|
-
return [rate.fixedUsdRate ?? 0, rate.fixedEurRate ?? 0];
|
|
155
|
-
}
|
|
156
|
-
return [rate.cbExchangeRate?.usdBuyingRate ?? 0, rate.cbExchangeRate?.eurBuyingRate ?? 0];
|
|
157
|
-
}
|
|
158
209
|
}
|
|
159
|
-
CostCalculationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, deps: [{ token: i1.
|
|
160
|
-
CostCalculationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationComponent, selector: "lib-cost-calculation", ngImport: i0, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(
|
|
210
|
+
CostCalculationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, deps: [{ token: i1.PriceParameterService }, { token: i2.PriceParameterLookupsService }, { token: i1.CostItemService }, { token: i1.CostGroupService }, { token: i1.ExchangeRateService }, { token: i1.ItemService }, { token: i3.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
+
CostCalculationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationComponent, selector: "lib-cost-calculation", ngImport: i0, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(selectedParameterDocEntry)]=\"selectedParameterDocEntry\"\r\n [(rawOilPrice)]=\"rawOilPrice\"\r\n [(rawOilCurrency)]=\"rawOilCurrency\"\r\n [systemRateUsd]=\"systemRateUsd\"\r\n [systemRateEur]=\"systemRateEur\"\r\n [(rateUsd)]=\"rateUsd\"\r\n [(rateEur)]=\"rateEur\"\r\n (itemChange)=\"onItemChange()\"\r\n (parameterChange)=\"onParameterChange()\"\r\n (recalc)=\"calculate()\"\r\n ></lib-cost-calculation-inputs>\r\n </div>\r\n\r\n <div class=\"col-lg-8 mb-3\">\r\n <div class=\"d-print-none\">\r\n <lib-cost-calculation-result-sum [roleGroups]=\"roleGroups\"></lib-cost-calculation-result-sum>\r\n </div>\r\n <div id=\"cost-calculation-results\">\r\n <lib-cost-calculation-results [result]=\"result\" [roleGroups]=\"roleGroups\" [itemName]=\"selectedItemName\" [rateUsd]=\"rateUsd\" [rateEur]=\"rateEur\"></lib-cost-calculation-results>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: ["@media print{body *{visibility:hidden}#cost-calculation-results,#cost-calculation-results *{visibility:visible}#cost-calculation-results{position:absolute;inset:0;width:100%}}\n"], dependencies: [{ kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i4.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i5.CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: ["itemsDataSource", "itemDisplayExpr", "parameters", "parameterDisplayExpr", "stages", "selectedItemCode", "selectedParameterDocEntry", "rawOilPrice", "rawOilCurrency", "systemRateUsd", "systemRateEur", "rateUsd", "rateEur"], outputs: ["selectedItemCodeChange", "selectedParameterDocEntryChange", "rawOilPriceChange", "rawOilCurrencyChange", "rateUsdChange", "rateEurChange", "itemChange", "parameterChange", "recalc"] }, { kind: "component", type: i6.CostCalculationResultsComponent, selector: "lib-cost-calculation-results", inputs: ["result", "roleGroups", "itemName", "rateUsd", "rateEur"] }, { kind: "component", type: i7.CostCalculationResultSumComponent, selector: "lib-cost-calculation-result-sum", inputs: ["roleGroups"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }], encapsulation: i0.ViewEncapsulation.None });
|
|
161
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationComponent, decorators: [{
|
|
162
213
|
type: Component,
|
|
163
|
-
args: [{ selector: 'lib-cost-calculation', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(
|
|
164
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFZTCxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLHVCQUF1QixHQUN4QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUVsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBUTNELE1BQU0sT0FBTyx3QkFBd0I7SUE0Qm5DLFlBQ21CLGdCQUFzQyxFQUN0QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLFdBQXdCO1FBSnhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4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QUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7O3FIQXZLVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0REM5QnJDLDQ1REE0Q0E7MkZEZGEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgQXJyYXlTdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvYXJyYXlfc3RvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvc3RHcm91cFNlcnZpY2UsXHJcbiAgQ29zdEl0ZW1TZXJ2aWNlLFxyXG4gIENvc3RQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gIEV4Y2hhbmdlUmF0ZVNlcnZpY2UsXHJcbiAgSXRlbVNlcnZpY2UsXHJcbiAgSXRlbUR0byxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG8sXHJcbiAgQ29zdFBhcmFtZXRlckR0byxcclxuICBDb3N0SXRlbUR0byxcclxuICBDb3N0R3JvdXBEdG8sXHJcbiAgRXhjaGFuZ2VSYXRlRHRvLFxyXG4gIEV4Y2hhbmdlUmF0ZVNvdXJjZSxcclxuICBDdXJyZW5jeSxcclxuICBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZSxcclxufSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IGJ1aWxkUm9sZUdyb3VwcywgY2FsY3VsYXRlQ29zdCwgQ29zdFJlc3VsdCwgUm9sZUdyb3VwIH0gZnJvbSAnLi4vZW5naW5lJztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uSXRlbSwgQ29zdENhbGN1bGF0aW9uU3RhZ2UgfSBmcm9tICcuLi9jb3N0LWNhbGN1bGF0aW9uLm1vZGVscyc7XHJcbmltcG9ydCB7IHBhcnNlRGVjaW1hbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL251bWJlci51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3N0Q2FsY3VsYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGl0ZW1Db2RlUHJlZml4ID0gJzA1JztcclxuICBwcm9kdWN0SXRlbXM6IEl0ZW1EdG9bXSA9IFtdO1xyXG4gIGl0ZW1zRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSXRlbU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwYXJhbWV0ZXJzOiBDb3N0UGFyYW1ldGVyRHRvW10gPSBbXTtcclxuICBzZWxlY3RlZFBhcmFtZXRlckNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICByYXdPaWxQcmljZSA9IDA7XHJcbiAgcmF3T2lsQ3VycmVuY3kgPSBDdXJyZW5jeS5VU0Q7XHJcblxyXG4gIHN5c3RlbVJhdGVVc2QgPSAwO1xyXG4gIHN5c3RlbVJhdGVFdXIgPSAwO1xyXG5cclxuICByYXRlVXNkID0gMDtcclxuICByYXRlRXVyID0gMDtcclxuXHJcbiAgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdID0gW107XHJcbiAgcmVzdWx0OiBDb3N0UmVzdWx0IHwgbnVsbCA9IG51bGw7XHJcbiAgcm9sZUdyb3VwczogUm9sZUdyb3VwW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjb3N0SXRlbXNCeUNvZGUgPSBuZXcgTWFwPHN0cmluZywgQ29zdEl0ZW1EdG8+KCk7XHJcbiAgcHJpdmF0ZSBncm91cHM6IENvc3RHcm91cER0b1tdID0gW107XHJcbiAgcHJpdmF0ZSBwcm9kdWN0R3JvdXBOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgcHJpdmF0ZSByZWdpb25OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTZXJ2aWNlOiBDb3N0UGFyYW1ldGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29zdEl0ZW1TZXJ2aWNlOiBDb3N0SXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvc3RHcm91cFNlcnZpY2U6IENvc3RHcm91cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2hhbmdlUmF0ZVNlcnZpY2U6IEV4Y2hhbmdlUmF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxjdWxhdGUoKTtcclxuXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIGNvc3RJdGVtczogdGhpcy5jb3N0SXRlbVNlcnZpY2UuZ2V0TGlzdCgpLFxyXG4gICAgICBncm91cHM6IHRoaXMuY29zdEdyb3VwU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIHJhdGU6IHRoaXMuZXhjaGFuZ2VSYXRlU2VydmljZS5nZXQoKSxcclxuICAgICAgbG9va3VwczogdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENvZGVMb29rdXBzKCksXHJcbiAgICAgIGl0ZW1zOiB0aGlzLml0ZW1TZXJ2aWNlLmdldExpc3QodGhpcy5pdGVtQ29kZVByZWZpeCksXHJcbiAgICB9KS5zdWJzY3JpYmUoKHsgcGFyYW1ldGVycywgY29zdEl0ZW1zLCBncm91cHMsIHJhdGUsIGxvb2t1cHMsIGl0ZW1zIH0pID0+IHtcclxuICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyA/PyBbXTtcclxuICAgICAgdGhpcy5wcm9kdWN0SXRlbXMgPSBpdGVtcyA/PyBbXTtcclxuICAgICAgdGhpcy5pdGVtc0RhdGFTb3VyY2UgPSBuZXcgRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgc3RvcmU6IG5ldyBBcnJheVN0b3JlKHsga2V5OiAnY29kZScsIGRhdGE6IHRoaXMucHJvZHVjdEl0ZW1zIH0pLFxyXG4gICAgICAgIHBhZ2luYXRlOiB0cnVlLFxyXG4gICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnByb2R1Y3RHcm91cE5hbWVzID0gdGhpcy50b05hbWVNYXAobG9va3Vwcz8ucHJvZHVjdEdyb3Vwcyk7XHJcbiAgICAgIHRoaXMucmVnaW9uTmFtZXMgPSB0aGlzLnRvTmFtZU1hcChsb29rdXBzPy5yZWdpb25zKTtcclxuXHJcbiAgICAgIHRoaXMuY29zdEl0ZW1zQnlDb2RlID0gbmV3IE1hcDxzdHJpbmcsIENvc3RJdGVtRHRvPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNpIG9mIGNvc3RJdGVtcyA/PyBbXSkge1xyXG4gICAgICAgIGlmIChjaS5jb2RlKSB0aGlzLmNvc3RJdGVtc0J5Q29kZS5zZXQoY2kuY29kZSwgY2kpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdyb3VwcyA9IChncm91cHMgPz8gW10pLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS5kaXNwbGF5T3JkZXIgLSBiLmRpc3BsYXlPcmRlcik7XHJcblxyXG4gICAgICBjb25zdCBbdXNkLCBldXJdID0gdGhpcy5yZXNvbHZlUmF0ZXMocmF0ZSk7XHJcbiAgICAgIHRoaXMuc3lzdGVtUmF0ZVVzZCA9IHVzZDtcclxuICAgICAgdGhpcy5zeXN0ZW1SYXRlRXVyID0gZXVyO1xyXG4gICAgICB0aGlzLnJhdGVVc2QgPSB1c2Q7XHJcbiAgICAgIHRoaXMucmF0ZUV1ciA9IGV1cjtcclxuXHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhcmFtZXRlckxhYmVsKHA6IENvc3RQYXJhbWV0ZXJEdG8pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJvZHVjdEdyb3VwID0gdGhpcy5wcm9kdWN0R3JvdXBOYW1lcy5nZXQocC5wcm9kdWN0R3JvdXAgPz8gJycpID8/IHAucHJvZHVjdEdyb3VwO1xyXG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5yZWdpb25OYW1lcy5nZXQocC5yZWdpb24gPz8gJycpID8/IHAucmVnaW9uO1xyXG4gICAgcmV0dXJuIFtwcm9kdWN0R3JvdXAsIHJlZ2lvbl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyDigJQgJykgfHwgKHAuY29kZSA/PyAnJyk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5wcm9kdWN0SXRlbXMuZmluZCh4ID0+IHguY29kZSA9PT0gdGhpcy5zZWxlY3RlZEl0ZW1Db2RlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtTmFtZSA9IGl0ZW0/Lm5hbWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGl0ZW1EaXNwbGF5RXhwciA9IChpdGVtOiBJdGVtRHRvKTogc3RyaW5nID0+XHJcbiAgICBpdGVtID8gW2l0ZW0uY29kZSwgaXRlbS5uYW1lXS5maWx0ZXIoQm9vbGVhbikuam9pbignIOKAlCAnKSA6ICcnO1xyXG5cclxuICByZWFkb25seSBwYXJhbWV0ZXJEaXNwbGF5RXhwciA9IChwOiBDb3N0UGFyYW1ldGVyRHRvKTogc3RyaW5nID0+XHJcbiAgICBwID8gdGhpcy5wYXJhbWV0ZXJMYWJlbChwKSA6ICcnO1xyXG5cclxuICBwcml2YXRlIHRvTmFtZU1hcChvcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlMb29rdXBEdG9bXSB8IHVuZGVmaW5lZCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMgPz8gW10pIHtcclxuICAgICAgaWYgKG9wdGlvbi5jb2RlKSBtYXAuc2V0KG9wdGlvbi5jb2RlLCBvcHRpb24ubmFtZSA/PyBvcHRpb24uY29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgb25QYXJhbWV0ZXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXIgPSB0aGlzLnBhcmFtZXRlcnMuZmluZChwID0+IHAuY29kZSA9PT0gdGhpcy5zZWxlY3RlZFBhcmFtZXRlckNvZGUpO1xyXG4gICAgdGhpcy5zdGFnZXMgPSBwYXJhbWV0ZXIgPyB0aGlzLmJ1aWxkU3RhZ2VzKHBhcmFtZXRlcikgOiBbXTtcclxuICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWVzQnlDb2RlKFxyXG4gICAgcGFyYW1ldGVyOiBDb3N0UGFyYW1ldGVyRHRvLFxyXG4gICk6IE1hcDxzdHJpbmcsIHsgdmFsdWU6IG51bWJlcjsgY3VycmVuY3k/OiBDdXJyZW5jeSB9PiB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgeyB2YWx1ZTogbnVtYmVyOyBjdXJyZW5jeT86IEN1cnJlbmN5IH0+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcGFyYW1ldGVyLml0ZW1zID8/IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvc3RJdGVtQ29kZSkge1xyXG4gICAgICAgIG1hcC5zZXQoaXRlbS5jb3N0SXRlbUNvZGUsIHsgdmFsdWU6IHBhcnNlRGVjaW1hbChpdGVtLnZhbHVlKSwgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3kgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU3RhZ2VzKHBhcmFtZXRlcjogQ29zdFBhcmFtZXRlckR0byk6IENvc3RDYWxjdWxhdGlvblN0YWdlW10ge1xyXG4gICAgY29uc3QgdmFsdWVzQnlDb2RlID0gdGhpcy5idWlsZFZhbHVlc0J5Q29kZShwYXJhbWV0ZXIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW1zOiBDb3N0Q2FsY3VsYXRpb25JdGVtW10gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjb2RlIG9mIGdyb3VwLml0ZW1Db2RlcyA/PyBbXSkge1xyXG4gICAgICAgIGNvbnN0IGNvc3RJdGVtID0gdGhpcy5jb3N0SXRlbXNCeUNvZGUuZ2V0KGNvZGUpO1xyXG4gICAgICAgIGlmICghY29zdEl0ZW0pIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IHZhbHVlc0J5Q29kZS5nZXQoY29kZSk7XHJcbiAgICAgICAgY29uc3QgaXNSYXRlID0gY29zdEl0ZW0uY2FsY3VsYXRpb25UeXBlID09PSBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZS5SYXRlO1xyXG4gICAgICAgIGl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29zdEl0ZW1Db2RlOiBjb2RlLFxyXG4gICAgICAgICAgY29zdEl0ZW1OYW1lOiBjb3N0SXRlbS5uYW1lID8/IGNvZGUsXHJcbiAgICAgICAgICBjYWxjdWxhdGlvblR5cGU6IGNvc3RJdGVtLmNhbGN1bGF0aW9uVHlwZSxcclxuICAgICAgICAgIHN5c3RlbUNvZGU6IGNvc3RJdGVtLnN5c3RlbUNvZGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgY3VycmVuY3k6IHN0b3JlZD8uY3VycmVuY3kgPz8gKGlzUmF0ZSA/IHVuZGVmaW5lZCA6IEN1cnJlbmN5LlRSWSksXHJcbiAgICAgICAgICB2YWx1ZTogc3RvcmVkPy52YWx1ZSA/PyAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZ3JvdXBDb2RlOiBncm91cC5jb2RlID8/ICcnLFxyXG4gICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSA/PyAnJyxcclxuICAgICAgICBkaXNwbGF5T3JkZXI6IGdyb3VwLmRpc3BsYXlPcmRlcixcclxuICAgICAgICBncm91cFJvbGU6IGdyb3VwLmdyb3VwUm9sZSxcclxuICAgICAgICBpdGVtcyxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXN1bHQgPSBjYWxjdWxhdGVDb3N0KHtcclxuICAgICAgcmF3T2lsUHJpY2U6IHBhcnNlRGVjaW1hbCh0aGlzLnJhd09pbFByaWNlKSxcclxuICAgICAgcmF3T2lsQ3VycmVuY3k6IHRoaXMucmF3T2lsQ3VycmVuY3ksXHJcbiAgICAgIHJhdGVVc2Q6IHBhcnNlRGVjaW1hbCh0aGlzLnJhdGVVc2QpLFxyXG4gICAgICByYXRlRXVyOiBwYXJzZURlY2ltYWwodGhpcy5yYXRlRXVyKSxcclxuICAgICAgc3RhZ2VzOiB0aGlzLnN0YWdlcyxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yb2xlR3JvdXBzID0gYnVpbGRSb2xlR3JvdXBzKHRoaXMucmVzdWx0LnJhd09pbCwgdGhpcy5yZXN1bHQuc3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIHByaW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LnByaW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVSYXRlcyhyYXRlOiBFeGNoYW5nZVJhdGVEdG8pOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICAgIGlmICghcmF0ZSkgcmV0dXJuIFswLCAwXTtcclxuICAgIGlmIChyYXRlLnNvdXJjZSA9PT0gRXhjaGFuZ2VSYXRlU291cmNlLkZpeGVkKSB7XHJcbiAgICAgIHJldHVybiBbcmF0ZS5maXhlZFVzZFJhdGUgPz8gMCwgcmF0ZS5maXhlZEV1clJhdGUgPz8gMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3JhdGUuY2JFeGNoYW5nZVJhdGU/LnVzZEJ1eWluZ1JhdGUgPz8gMCwgcmF0ZS5jYkV4Y2hhbmdlUmF0ZT8uZXVyQnV5aW5nUmF0ZSA/PyAwXTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMSBwdC0wIHB0LW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByaW50KClcIiBbZGlzYWJsZWRdPVwiIXJlc3VsdFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wcmludCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlByaW50JyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbWItM1wiPlxyXG4gICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24taW5wdXRzXHJcbiAgICAgICAgW2l0ZW1zRGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtpdGVtRGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICBbcGFyYW1ldGVyRGlzcGxheUV4cHJdPVwicGFyYW1ldGVyRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzdGFnZXNdPVwic3RhZ2VzXCJcclxuICAgICAgICBbKHNlbGVjdGVkSXRlbUNvZGUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIFsoc2VsZWN0ZWRQYXJhbWV0ZXJDb2RlKV09XCJzZWxlY3RlZFBhcmFtZXRlckNvZGVcIlxyXG4gICAgICAgIFsocmF3T2lsUHJpY2UpXT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICBbKHJhd09pbEN1cnJlbmN5KV09XCJyYXdPaWxDdXJyZW5jeVwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVVc2RdPVwic3lzdGVtUmF0ZVVzZFwiXHJcbiAgICAgICAgW3N5c3RlbVJhdGVFdXJdPVwic3lzdGVtUmF0ZUV1clwiXHJcbiAgICAgICAgWyhyYXRlVXNkKV09XCJyYXRlVXNkXCJcclxuICAgICAgICBbKHJhdGVFdXIpXT1cInJhdGVFdXJcIlxyXG4gICAgICAgIChpdGVtQ2hhbmdlKT1cIm9uSXRlbUNoYW5nZSgpXCJcclxuICAgICAgICAocGFyYW1ldGVyQ2hhbmdlKT1cIm9uUGFyYW1ldGVyQ2hhbmdlKClcIlxyXG4gICAgICAgIChyZWNhbGMpPVwiY2FsY3VsYXRlKClcIlxyXG4gICAgICA+PC9saWItY29zdC1jYWxjdWxhdGlvbi1pbnB1dHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1wcmludC1ub25lXCI+XHJcbiAgICAgICAgPGxpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdC1zdW0gW3JvbGVHcm91cHNdPVwicm9sZUdyb3Vwc1wiPjwvbGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgaWQ9XCJjb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHNcIj5cclxuICAgICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0cyBbcmVzdWx0XT1cInJlc3VsdFwiIFtyb2xlR3JvdXBzXT1cInJvbGVHcm91cHNcIiBbaXRlbU5hbWVdPVwic2VsZWN0ZWRJdGVtTmFtZVwiIFtyYXRlVXNkXT1cInJhdGVVc2RcIiBbcmF0ZUV1cl09XCJyYXRlRXVyXCI+PC9saWItY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
|
|
214
|
+
args: [{ selector: 'lib-cost-calculation', encapsulation: ViewEncapsulation.None, template: "<abp-page [title]=\"'Keops::CostCalculations:Title' | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2\">\r\n <button class=\"btn btn-outline-primary\" type=\"button\" (click)=\"print()\" [disabled]=\"!result\">\r\n <i class=\"fa fa-print me-1\"></i>\r\n <span>{{ 'Keops::CostCalculations:Print' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 mb-3\">\r\n <lib-cost-calculation-inputs\r\n [itemsDataSource]=\"itemsDataSource\"\r\n [itemDisplayExpr]=\"itemDisplayExpr\"\r\n [parameters]=\"parameters\"\r\n [parameterDisplayExpr]=\"parameterDisplayExpr\"\r\n [stages]=\"stages\"\r\n [(selectedItemCode)]=\"selectedItemCode\"\r\n [(selectedParameterDocEntry)]=\"selectedParameterDocEntry\"\r\n [(rawOilPrice)]=\"rawOilPrice\"\r\n [(rawOilCurrency)]=\"rawOilCurrency\"\r\n [systemRateUsd]=\"systemRateUsd\"\r\n [systemRateEur]=\"systemRateEur\"\r\n [(rateUsd)]=\"rateUsd\"\r\n [(rateEur)]=\"rateEur\"\r\n (itemChange)=\"onItemChange()\"\r\n (parameterChange)=\"onParameterChange()\"\r\n (recalc)=\"calculate()\"\r\n ></lib-cost-calculation-inputs>\r\n </div>\r\n\r\n <div class=\"col-lg-8 mb-3\">\r\n <div class=\"d-print-none\">\r\n <lib-cost-calculation-result-sum [roleGroups]=\"roleGroups\"></lib-cost-calculation-result-sum>\r\n </div>\r\n <div id=\"cost-calculation-results\">\r\n <lib-cost-calculation-results [result]=\"result\" [roleGroups]=\"roleGroups\" [itemName]=\"selectedItemName\" [rateUsd]=\"rateUsd\" [rateEur]=\"rateEur\"></lib-cost-calculation-results>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: ["@media print{body *{visibility:hidden}#cost-calculation-results,#cost-calculation-results *{visibility:visible}#cost-calculation-results{position:absolute;inset:0;width:100%}}\n"] }]
|
|
215
|
+
}], ctorParameters: function () { return [{ type: i1.PriceParameterService }, { type: i2.PriceParameterLookupsService }, { type: i1.CostItemService }, { type: i1.CostGroupService }, { type: i1.ExchangeRateService }, { type: i1.ItemService }, { type: i3.LocalizationService }]; } });
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFJTCxrQkFBa0IsRUFRbEIsUUFBUSxHQUNULE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXlCLE1BQU0sV0FBVyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7QUFTNUUsTUFBTSxPQUFPLHdCQUF3QjtJQThCbkMsWUFDbUIsZ0JBQXVDLEVBQ3ZDLDRCQUEwRCxF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QUFjO1lBQ25DLE9BQU8sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7cUhBL05VLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDREQ2xDckMsbzZEQTRDQTsyRkRWYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgQXJyYXlTdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvYXJyYXlfc3RvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEJ1c2luZXNzUmVnaW9uLFxyXG4gIENvc3RHcm91cFNlcnZpY2UsXHJcbiAgQ29zdEl0ZW1TZXJ2aWNlLFxyXG4gIENvc3RJdGVtU3lzdGVtQ29kZSxcclxuICBQcmljZVBhcmFtZXRlclNlcnZpY2UsXHJcbiAgRXhjaGFuZ2VSYXRlU2VydmljZSxcclxuICBJdGVtU2VydmljZSxcclxuICBJdGVtRHRvLFxyXG4gIFByaWNlUGFyYW1ldGVyRHRvLFxyXG4gIENvc3RJdGVtRHRvLFxyXG4gIENvc3RHcm91cER0byxcclxuICBDdXJyZW5jeSxcclxufSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IGJ1aWxkUm9sZUdyb3VwcywgY2FsY3VsYXRlQ29zdCwgQ29zdFJlc3VsdCwgUm9sZUdyb3VwIH0gZnJvbSAnLi4vZW5naW5lJztcclxuaW1wb3J0IHsgdG9BbW91bnQgfSBmcm9tICcuLi9lbmdpbmUvY3VycmVuY3kudXRpbHMnO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25JdGVtLCBDb3N0Q2FsY3VsYXRpb25TdGFnZSB9IGZyb20gJy4uL2Nvc3QtY2FsY3VsYXRpb24ubW9kZWxzJztcclxuaW1wb3J0IHsgcGFyc2VEZWNpbWFsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbnVtYmVyLnV0aWxzJztcclxuaW1wb3J0IHsgcmVzb2x2ZVN5c3RlbVJhdGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZXhjaGFuZ2UtcmF0ZS51dGlscyc7XHJcbmltcG9ydCB7IGlzUmF0ZUNvc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Nvc3QtaXRlbS1jbGFzc2lmaWNhdGlvbi51dGlscyc7XHJcbmltcG9ydCB7IGJ1c2luZXNzUmVnaW9uTGFiZWxzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYnVzaW5lc3MtcmVnaW9uLnV0aWxzJztcclxuaW1wb3J0IHsgUHJpY2VQYXJhbWV0ZXJMb29rdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3ByaWNlLXBhcmFtZXRlcnMvcHJpY2UtcGFyYW1ldGVyLWxvb2t1cHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29zdC1jYWxjdWxhdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3N0Q2FsY3VsYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGl0ZW1Db2RlUHJlZml4ID0gJzA1JztcclxuICBwcm9kdWN0SXRlbXM6IEl0ZW1EdG9bXSA9IFtdO1xyXG4gIGl0ZW1zRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSXRlbU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwYXJhbWV0ZXJzOiBQcmljZVBhcmFtZXRlckR0b1tdID0gW107XHJcbiAgc2VsZWN0ZWRQYXJhbWV0ZXJEb2NFbnRyeTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHJhd09pbFByaWNlID0gMDtcclxuICByYXdPaWxDdXJyZW5jeSA9IEN1cnJlbmN5LlVTRDtcclxuXHJcbiAgc3lzdGVtUmF0ZVVzZCA9IDA7XHJcbiAgc3lzdGVtUmF0ZUV1ciA9IDA7XHJcblxyXG4gIHJhdGVVc2QgPSAwO1xyXG4gIHJhdGVFdXIgPSAwO1xyXG5cclxuICBzdGFnZXM6IENvc3RDYWxjdWxhdGlvblN0YWdlW10gPSBbXTtcclxuICByZXN1bHQ6IENvc3RSZXN1bHQgfCBudWxsID0gbnVsbDtcclxuICByb2xlR3JvdXBzOiBSb2xlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIHBhY2thZ2luZ0Jhc2VUcnkgPSAwO1xyXG5cclxuICBwcml2YXRlIGNvc3RJdGVtc0J5Q29kZSA9IG5ldyBNYXA8c3RyaW5nLCBDb3N0SXRlbUR0bz4oKTtcclxuICBwcml2YXRlIGdyb3VwczogQ29zdEdyb3VwRHRvW10gPSBbXTtcclxuICBwcml2YXRlIHByb2R1Y3RHcm91cE5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICBwcml2YXRlIHR5cGVOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTZXJ2aWNlOiBQcmljZVBhcmFtZXRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaWNlUGFyYW1ldGVyTG9va3Vwc1NlcnZpY2U6IFByaWNlUGFyYW1ldGVyTG9va3Vwc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvc3RJdGVtU2VydmljZTogQ29zdEl0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3N0R3JvdXBTZXJ2aWNlOiBDb3N0R3JvdXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNoYW5nZVJhdGVTZXJ2aWNlOiBFeGNoYW5nZVJhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsaXphdGlvbjogTG9jYWxpemF0aW9uU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxjdWxhdGUoKTtcclxuXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIGNvc3RJdGVtczogdGhpcy5jb3N0SXRlbVNlcnZpY2UuZ2V0TGlzdCgpLFxyXG4gICAgICBncm91cHM6IHRoaXMuY29zdEdyb3VwU2VydmljZS5nZXRMaXN0KCksXHJcbiAgICAgIHJhdGU6IHRoaXMuZXhjaGFuZ2VSYXRlU2VydmljZS5nZXQoKSxcclxuICAgICAgbG9va3VwczogdGhpcy5wcmljZVBhcmFtZXRlckxvb2t1cHNTZXJ2aWNlLmxvYWRUeXBlQW5kQ2F0ZWdvcnlMb29rdXBzKCksXHJcbiAgICB9KS5zdWJzY3JpYmUoKHsgcGFyYW1ldGVycywgY29zdEl0ZW1zLCBncm91cHMsIHJhdGUsIGxvb2t1cHMgfSkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzID8/IFtdO1xyXG5cclxuICAgICAgdGhpcy5wcm9kdWN0R3JvdXBOYW1lcyA9IHRoaXMudG9OYW1lTWFwKGxvb2t1cHMuZ3JvdXBPcHRpb25zKTtcclxuICAgICAgdGhpcy50eXBlTmFtZXMgPSB0aGlzLnRvTmFtZU1hcChsb29rdXBzLnR5cGVPcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMuY29zdEl0ZW1zQnlDb2RlID0gbmV3IE1hcDxzdHJpbmcsIENvc3RJdGVtRHRvPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNpIG9mIGNvc3RJdGVtcyA/PyBbXSkge1xyXG4gICAgICAgIGlmIChjaS5jb2RlKSB0aGlzLmNvc3RJdGVtc0J5Q29kZS5zZXQoY2kuY29kZSwgY2kpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdyb3VwcyA9IChncm91cHMgPz8gW10pLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS5kaXNwbGF5T3JkZXIgLSBiLmRpc3BsYXlPcmRlcik7XHJcblxyXG4gICAgICBjb25zdCBbdXNkLCBldXJdID0gcmVzb2x2ZVN5c3RlbVJhdGVzKHJhdGUpO1xyXG4gICAgICB0aGlzLnN5c3RlbVJhdGVVc2QgPSB1c2Q7XHJcbiAgICAgIHRoaXMuc3lzdGVtUmF0ZUV1ciA9IGV1cjtcclxuICAgICAgdGhpcy5yYXRlVXNkID0gdXNkO1xyXG4gICAgICB0aGlzLnJhdGVFdXIgPSBldXI7XHJcblxyXG4gICAgICB0aGlzLmNhbGN1bGF0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwYXJhbWV0ZXJMYWJlbChwOiBQcmljZVBhcmFtZXRlckR0byk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBncm91cE5hbWUgPSB0aGlzLnByb2R1Y3RHcm91cE5hbWVzLmdldChwLmdyb3VwQ29kZSA/PyAnJykgPz8gcC5ncm91cENvZGU7XHJcbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZU5hbWVzLmdldChwLnR5cGVDb2RlID8/ICcnKSA/PyBwLnR5cGVDb2RlO1xyXG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5sb2NhbGl6YXRpb24uaW5zdGFudChidXNpbmVzc1JlZ2lvbkxhYmVsc1twLnJlZ2lvbl0pO1xyXG4gICAgcmV0dXJuIFt0eXBlTmFtZSwgZ3JvdXBOYW1lLCByZWdpb25dLmZpbHRlcihCb29sZWFuKS5qb2luKCcg4oCUICcpIHx8IFN0cmluZyhwLmRvY0VudHJ5ID8/ICcnKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnByb2R1Y3RJdGVtcy5maW5kKHggPT4geC5jb2RlID09PSB0aGlzLnNlbGVjdGVkSXRlbUNvZGUpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gaXRlbT8ubmFtZSA/PyBudWxsO1xyXG4gICAgdGhpcy5sb2FkUGFja2FnaW5nQ29zdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkUGFja2FnaW5nQ29zdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1Db2RlKSB7XHJcbiAgICAgIHRoaXMucGFja2FnaW5nQmFzZVRyeSA9IDA7XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1TZXJ2aWNlLmdldFBhY2thZ2luZ0Nvc3QodGhpcy5zZWxlY3RlZEl0ZW1Db2RlKS5zdWJzY3JpYmUoYW1vdW50ID0+IHtcclxuICAgICAgdGhpcy5wYWNrYWdpbmdCYXNlVHJ5ID0gYW1vdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFBhY2thZ2luZ0l0ZW0oKTogQ29zdENhbGN1bGF0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XHJcbiAgICAgIGNvbnN0IGZvdW5kID0gc3RhZ2UuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0uc3lzdGVtQ29kZSA9PT0gQ29zdEl0ZW1TeXN0ZW1Db2RlLlBhY2thZ2luZyk7XHJcbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYWNrYWdpbmdBbW91bnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kUGFja2FnaW5nSXRlbSgpO1xyXG4gICAgaWYgKCFpdGVtKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgYW1vdW50cyA9IHRvQW1vdW50KHRoaXMucGFja2FnaW5nQmFzZVRyeSwgdGhpcy5yYXRlVXNkLCB0aGlzLnJhdGVFdXIpO1xyXG4gICAgaXRlbS52YWx1ZSA9XHJcbiAgICAgIGl0ZW0uY3VycmVuY3kgPT09IEN1cnJlbmN5LlRSWSA/IGFtb3VudHMudHJ5IDogaXRlbS5jdXJyZW5jeSA9PT0gQ3VycmVuY3kuRVVSID8gYW1vdW50cy5ldXIgOiBhbW91bnRzLnVzZDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGl0ZW1EaXNwbGF5RXhwciA9IChpdGVtOiBJdGVtRHRvKTogc3RyaW5nID0+XHJcbiAgICBpdGVtID8gW2l0ZW0uY29kZSwgaXRlbS5uYW1lXS5maWx0ZXIoQm9vbGVhbikuam9pbignIOKAlCAnKSA6ICcnO1xyXG5cclxuICByZWFkb25seSBwYXJhbWV0ZXJEaXNwbGF5RXhwciA9IChwOiBQcmljZVBhcmFtZXRlckR0byk6IHN0cmluZyA9PlxyXG4gICAgcCA/IHRoaXMucGFyYW1ldGVyTGFiZWwocCkgOiAnJztcclxuXHJcbiAgcHJpdmF0ZSB0b05hbWVNYXAoXHJcbiAgICBvcHRpb25zOiBSZWFkb25seUFycmF5PHsgY29kZT86IHN0cmluZzsgbmFtZT86IHN0cmluZyB9PiB8IHVuZGVmaW5lZCxcclxuICApOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zID8/IFtdKSB7XHJcbiAgICAgIGlmIChvcHRpb24uY29kZSkgbWFwLnNldChvcHRpb24uY29kZSwgb3B0aW9uLm5hbWUgPz8gb3B0aW9uLmNvZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIG9uUGFyYW1ldGVyQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGFyYW1ldGVyID0gdGhpcy5wYXJhbWV0ZXJzLmZpbmQocCA9PiBwLmRvY0VudHJ5ID09PSB0aGlzLnNlbGVjdGVkUGFyYW1ldGVyRG9jRW50cnkpO1xyXG4gICAgdGhpcy5zdGFnZXMgPSBwYXJhbWV0ZXIgPyB0aGlzLmJ1aWxkU3RhZ2VzKHBhcmFtZXRlcikgOiBbXTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbUNvZGUgPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1OYW1lID0gbnVsbDtcclxuICAgIHRoaXMucGFja2FnaW5nQmFzZVRyeSA9IDA7XHJcblxyXG4gICAgaWYgKHBhcmFtZXRlcikge1xyXG4gICAgICB0aGlzLnJhd09pbFByaWNlID0gcGFyYW1ldGVyLnJhd09pbFByaWNlID8/IDA7XHJcbiAgICAgIHRoaXMucmF3T2lsQ3VycmVuY3kgPSBwYXJhbWV0ZXIucmF3T2lsQ3VycmVuY3kgPz8gQ3VycmVuY3kuVVNEO1xyXG4gICAgICB0aGlzLnJhdGVVc2QgPSBwYXJhbWV0ZXIuZXhjaGFuZ2VSYXRlVXNkIHx8IHRoaXMuc3lzdGVtUmF0ZVVzZDtcclxuICAgICAgdGhpcy5yYXRlRXVyID0gcGFyYW1ldGVyLmV4Y2hhbmdlUmF0ZUV1ciB8fCB0aGlzLnN5c3RlbVJhdGVFdXI7XHJcbiAgICAgIHRoaXMubG9hZFByb2R1Y3RJdGVtcyhwYXJhbWV0ZXIucmVnaW9uLCBwYXJhbWV0ZXIuZ3JvdXBDb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJvZHVjdEl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuaXRlbXNEYXRhU291cmNlID0gbmV3IERhdGFTb3VyY2Uoe1xyXG4gICAgICAgIHN0b3JlOiBuZXcgQXJyYXlTdG9yZSh7IGtleTogJ2NvZGUnLCBkYXRhOiBbXSB9KSxcclxuICAgICAgICBwYWdpbmF0ZTogdHJ1ZSxcclxuICAgICAgICBwYWdlU2l6ZTogNTAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsY3VsYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRQcm9kdWN0SXRlbXMocmVnaW9uOiBCdXNpbmVzc1JlZ2lvbiwgZ3JvdXBDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbVNlcnZpY2UuZ2V0TGlzdCh0aGlzLml0ZW1Db2RlUHJlZml4LCByZWdpb24sIGdyb3VwQ29kZSkuc3Vic2NyaWJlKGl0ZW1zID0+IHtcclxuICAgICAgdGhpcy5wcm9kdWN0SXRlbXMgPSBpdGVtcyA/PyBbXTtcclxuICAgICAgdGhpcy5pdGVtc0RhdGFTb3VyY2UgPSBuZXcgRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgc3RvcmU6IG5ldyBBcnJheVN0b3JlKHsga2V5OiAnY29kZScsIGRhdGE6IHRoaXMucHJvZHVjdEl0ZW1zIH0pLFxyXG4gICAgICAgIHBhZ2luYXRlOiB0cnVlLFxyXG4gICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRWYWx1ZXNCeUNvZGUoXHJcbiAgICBwYXJhbWV0ZXI6IFByaWNlUGFyYW1ldGVyRHRvLFxyXG4gICk6IE1hcDxzdHJpbmcsIHsgdmFsdWU6IG51bWJlcjsgY3VycmVuY3k/OiBDdXJyZW5jeSB9PiB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgeyB2YWx1ZTogbnVtYmVyOyBjdXJyZW5jeT86IEN1cnJlbmN5IH0+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcGFyYW1ldGVyLml0ZW1zID8/IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvc3RJdGVtQ29kZSkge1xyXG4gICAgICAgIG1hcC5zZXQoaXRlbS5jb3N0SXRlbUNvZGUsIHsgdmFsdWU6IHBhcnNlRGVjaW1hbChpdGVtLnZhbHVlKSwgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3kgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU3RhZ2VzKHBhcmFtZXRlcjogUHJpY2VQYXJhbWV0ZXJEdG8pOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdIHtcclxuICAgIGNvbnN0IHZhbHVlc0J5Q29kZSA9IHRoaXMuYnVpbGRWYWx1ZXNCeUNvZGUocGFyYW1ldGVyKTtcclxuICAgIHJldHVybiB0aGlzLmdyb3Vwcy5tYXAoZ3JvdXAgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtczogQ29zdENhbGN1bGF0aW9uSXRlbVtdID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgY29kZSBvZiBncm91cC5pdGVtQ29kZXMgPz8gW10pIHtcclxuICAgICAgICBjb25zdCBjb3N0SXRlbSA9IHRoaXMuY29zdEl0ZW1zQnlDb2RlLmdldChjb2RlKTtcclxuICAgICAgICBpZiAoIWNvc3RJdGVtKSBjb250aW51ZTtcclxuICAgICAgICBjb25zdCBzdG9yZWQgPSB2YWx1ZXNCeUNvZGUuZ2V0KGNvZGUpO1xyXG4gICAgICAgIGNvbnN0IGlzUmF0ZSA9IGlzUmF0ZUNvc3RJdGVtKGNvc3RJdGVtKTtcclxuICAgICAgICBpdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvc3RJdGVtQ29kZTogY29kZSxcclxuICAgICAgICAgIGNvc3RJdGVtTmFtZTogY29zdEl0ZW0ubmFtZSA/PyBjb2RlLFxyXG4gICAgICAgICAgY2FsY3VsYXRpb25UeXBlOiBjb3N0SXRlbS5jYWxjdWxhdGlvblR5cGUsXHJcbiAgICAgICAgICBzeXN0ZW1Db2RlOiBjb3N0SXRlbS5zeXN0ZW1Db2RlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGN1cnJlbmN5OiBzdG9yZWQ/LmN1cnJlbmN5ID8/IChpc1JhdGUgPyB1bmRlZmluZWQgOiBDdXJyZW5jeS5UUlkpLFxyXG4gICAgICAgICAgdmFsdWU6IHN0b3JlZD8udmFsdWUgPz8gMCxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGdyb3VwQ29kZTogZ3JvdXAuY29kZSA/PyAnJyxcclxuICAgICAgICBncm91cE5hbWU6IGdyb3VwLm5hbWUgPz8gJycsXHJcbiAgICAgICAgZGlzcGxheU9yZGVyOiBncm91cC5kaXNwbGF5T3JkZXIsXHJcbiAgICAgICAgZ3JvdXBSb2xlOiBncm91cC5ncm91cFJvbGUsXHJcbiAgICAgICAgaXRlbXMsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBwbHlQYWNrYWdpbmdBbW91bnQoKTtcclxuXHJcbiAgICB0aGlzLnJlc3VsdCA9IGNhbGN1bGF0ZUNvc3Qoe1xyXG4gICAgICByYXdPaWxQcmljZTogcGFyc2VEZWNpbWFsKHRoaXMucmF3T2lsUHJpY2UpLFxyXG4gICAgICByYXdPaWxDdXJyZW5jeTogdGhpcy5yYXdPaWxDdXJyZW5jeSxcclxuICAgICAgcmF0ZVVzZDogcGFyc2VEZWNpbWFsKHRoaXMucmF0ZVVzZCksXHJcbiAgICAgIHJhdGVFdXI6IHBhcnNlRGVjaW1hbCh0aGlzLnJhdGVFdXIpLFxyXG4gICAgICBzdGFnZXM6IHRoaXMuc3RhZ2VzLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJvbGVHcm91cHMgPSBidWlsZFJvbGVHcm91cHModGhpcy5yZXN1bHQucmF3T2lsLCB0aGlzLnJlc3VsdC5zdGFnZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpbnQoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucHJpbnQoKTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMSBwdC0wIHB0LW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByaW50KClcIiBbZGlzYWJsZWRdPVwiIXJlc3VsdFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wcmludCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlByaW50JyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbWItM1wiPlxyXG4gICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24taW5wdXRzXHJcbiAgICAgICAgW2l0ZW1zRGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtpdGVtRGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICBbcGFyYW1ldGVyRGlzcGxheUV4cHJdPVwicGFyYW1ldGVyRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzdGFnZXNdPVwic3RhZ2VzXCJcclxuICAgICAgICBbKHNlbGVjdGVkSXRlbUNvZGUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIFsoc2VsZWN0ZWRQYXJhbWV0ZXJEb2NFbnRyeSldPVwic2VsZWN0ZWRQYXJhbWV0ZXJEb2NFbnRyeVwiXHJcbiAgICAgICAgWyhyYXdPaWxQcmljZSldPVwicmF3T2lsUHJpY2VcIlxyXG4gICAgICAgIFsocmF3T2lsQ3VycmVuY3kpXT1cInJhd09pbEN1cnJlbmN5XCJcclxuICAgICAgICBbc3lzdGVtUmF0ZVVzZF09XCJzeXN0ZW1SYXRlVXNkXCJcclxuICAgICAgICBbc3lzdGVtUmF0ZUV1cl09XCJzeXN0ZW1SYXRlRXVyXCJcclxuICAgICAgICBbKHJhdGVVc2QpXT1cInJhdGVVc2RcIlxyXG4gICAgICAgIFsocmF0ZUV1cildPVwicmF0ZUV1clwiXHJcbiAgICAgICAgKGl0ZW1DaGFuZ2UpPVwib25JdGVtQ2hhbmdlKClcIlxyXG4gICAgICAgIChwYXJhbWV0ZXJDaGFuZ2UpPVwib25QYXJhbWV0ZXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgKHJlY2FsYyk9XCJjYWxjdWxhdGUoKVwiXHJcbiAgICAgID48L2xpYi1jb3N0LWNhbGN1bGF0aW9uLWlucHV0cz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOCBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLXByaW50LW5vbmVcIj5cclxuICAgICAgICA8bGliLWNvc3QtY2FsY3VsYXRpb24tcmVzdWx0LXN1bSBbcm9sZUdyb3Vwc109XCJyb2xlR3JvdXBzXCI+PC9saWItY29zdC1jYWxjdWxhdGlvbi1yZXN1bHQtc3VtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBpZD1cImNvc3QtY2FsY3VsYXRpb24tcmVzdWx0c1wiPlxyXG4gICAgICAgIDxsaWItY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzIFtyZXN1bHRdPVwicmVzdWx0XCIgW3JvbGVHcm91cHNdPVwicm9sZUdyb3Vwc1wiIFtpdGVtTmFtZV09XCJzZWxlY3RlZEl0ZW1OYW1lXCIgW3JhdGVVc2RdPVwicmF0ZVVzZFwiIFtyYXRlRXVyXT1cInJhdGVFdXJcIj48L2xpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Currency } from '@hitsoft/kadooglu-keops/proxy';
|
|
2
|
-
export function toAmount(
|
|
2
|
+
export function toAmount(baseTry, rateUsd, rateEur) {
|
|
3
3
|
return {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
eur: rateEur > 0 ?
|
|
4
|
+
try: baseTry,
|
|
5
|
+
usd: rateUsd > 0 ? baseTry / rateUsd : 0,
|
|
6
|
+
eur: rateEur > 0 ? baseTry / rateEur : 0,
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
|
-
export function
|
|
9
|
+
export function toBaseTry(value, currency, rateUsd, rateEur) {
|
|
10
10
|
switch (currency) {
|
|
11
|
-
case Currency.USD:
|
|
12
|
-
return value;
|
|
13
11
|
case Currency.TRY:
|
|
14
|
-
return
|
|
12
|
+
return value;
|
|
13
|
+
case Currency.USD:
|
|
14
|
+
return value * rateUsd;
|
|
15
15
|
case Currency.EUR:
|
|
16
|
-
return
|
|
16
|
+
return value * rateEur;
|
|
17
17
|
default:
|
|
18
18
|
return value;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vZW5naW5lL2N1cnJlbmN5LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUd6RCxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQWUsRUFBRSxPQUFlLEVBQUUsT0FBZTtJQUN4RSxPQUFPO1FBQ0wsR0FBRyxFQUFFLE9BQU87UUFDWixHQUFHLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxHQUFHLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQWEsRUFDYixRQUE4QixFQUM5QixPQUFlLEVBQ2YsT0FBZTtJQUVmLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssUUFBUSxDQUFDLEdBQUc7WUFDZixPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssUUFBUSxDQUFDLEdBQUc7WUFDZixPQUFPLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDekIsS0FBSyxRQUFRLENBQUMsR0FBRztZQUNmLE9BQU8sS0FBSyxHQUFHLE9BQU8sQ0FBQztRQUN6QjtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5IH0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBDb3N0QW1vdW50IH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQW1vdW50KGJhc2VUcnk6IG51bWJlciwgcmF0ZVVzZDogbnVtYmVyLCByYXRlRXVyOiBudW1iZXIpOiBDb3N0QW1vdW50IHtcclxuICByZXR1cm4ge1xyXG4gICAgdHJ5OiBiYXNlVHJ5LFxyXG4gICAgdXNkOiByYXRlVXNkID4gMCA/IGJhc2VUcnkgLyByYXRlVXNkIDogMCxcclxuICAgIGV1cjogcmF0ZUV1ciA+IDAgPyBiYXNlVHJ5IC8gcmF0ZUV1ciA6IDAsXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQmFzZVRyeShcclxuICB2YWx1ZTogbnVtYmVyLFxyXG4gIGN1cnJlbmN5OiBDdXJyZW5jeSB8IHVuZGVmaW5lZCxcclxuICByYXRlVXNkOiBudW1iZXIsXHJcbiAgcmF0ZUV1cjogbnVtYmVyLFxyXG4pOiBudW1iZXIge1xyXG4gIHN3aXRjaCAoY3VycmVuY3kpIHtcclxuICAgIGNhc2UgQ3VycmVuY3kuVFJZOlxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICBjYXNlIEN1cnJlbmN5LlVTRDpcclxuICAgICAgcmV0dXJuIHZhbHVlICogcmF0ZVVzZDtcclxuICAgIGNhc2UgQ3VycmVuY3kuRVVSOlxyXG4gICAgICByZXR1cm4gdmFsdWUgKiByYXRlRXVyO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { toAmount,
|
|
1
|
+
import { toAmount, toBaseTry } from './currency.utils';
|
|
2
2
|
import { indexItemsBySystemCode, resolveItems } from './item-resolver';
|
|
3
3
|
import { buildComputedBaseByCode, buildCostStages } from './stage-builder';
|
|
4
|
-
export function calculateLoss(
|
|
5
|
-
return (((
|
|
4
|
+
export function calculateLoss(rawOilTry, resolvedItems) {
|
|
5
|
+
return (((rawOilTry + resolvedItems.port + resolvedItems.inspectionCustoms + resolvedItems.freight) *
|
|
6
6
|
resolvedItems.lossRate) /
|
|
7
7
|
100);
|
|
8
8
|
}
|
|
9
|
-
export function calculateProductionCost(
|
|
10
|
-
return (
|
|
9
|
+
export function calculateProductionCost(rawOilTry, resolvedItems, loss) {
|
|
10
|
+
return (rawOilTry +
|
|
11
11
|
resolvedItems.port +
|
|
12
12
|
resolvedItems.inspectionCustoms +
|
|
13
13
|
resolvedItems.freight +
|
|
@@ -33,18 +33,18 @@ export function calculateTotalSalePrice(totalCost, profit) {
|
|
|
33
33
|
}
|
|
34
34
|
export function calculateCost(request) {
|
|
35
35
|
const { rateUsd, rateEur } = request;
|
|
36
|
-
const
|
|
36
|
+
const rawOilTry = toBaseTry(request.rawOilPrice, request.rawOilCurrency, rateUsd, rateEur);
|
|
37
37
|
const itemsByCode = indexItemsBySystemCode(request.stages);
|
|
38
38
|
const resolvedItems = resolveItems(itemsByCode, rateUsd, rateEur);
|
|
39
|
-
const loss = calculateLoss(
|
|
40
|
-
const productionCost = calculateProductionCost(
|
|
39
|
+
const loss = calculateLoss(rawOilTry, resolvedItems);
|
|
40
|
+
const productionCost = calculateProductionCost(rawOilTry, resolvedItems, loss);
|
|
41
41
|
const totalCost = calculateTotalCost(productionCost, resolvedItems);
|
|
42
42
|
const profit = calculateProfit(totalCost, resolvedItems.profitRate);
|
|
43
43
|
const totalSalePrice = calculateTotalSalePrice(totalCost, profit);
|
|
44
44
|
const computedBaseByCode = buildComputedBaseByCode(resolvedItems, loss, profit);
|
|
45
45
|
const stages = buildCostStages(request.stages, computedBaseByCode, itemsByCode, rateUsd, rateEur);
|
|
46
46
|
return {
|
|
47
|
-
rawOil: toAmount(
|
|
47
|
+
rawOil: toAmount(rawOilTry, rateUsd, rateEur),
|
|
48
48
|
stages,
|
|
49
49
|
productionCost: toAmount(productionCost, rateUsd, rateEur),
|
|
50
50
|
totalCost: toAmount(totalCost, rateUsd, rateEur),
|
|
@@ -52,4 +52,4 @@ export function calculateCost(request) {
|
|
|
52
52
|
totalSalePrice: toAmount(totalSalePrice, rateUsd, rateEur),
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vZW5naW5lL2Zvcm11bGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRSxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQWlCLEVBQUUsYUFBNEI7SUFDM0UsT0FBTyxDQUNMLENBQUMsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUN6RixhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3pCLEdBQUcsQ0FDSixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsU0FBaUIsRUFDakIsYUFBNEIsRUFDNUIsSUFBWTtJQUVaLE9BQU8sQ0FDTCxTQUFTO1FBQ1QsYUFBYSxDQUFDLElBQUk7UUFDbEIsYUFBYSxDQUFDLGlCQUFpQjtRQUMvQixhQUFhLENBQUMsT0FBTztRQUNyQixJQUFJO1FBQ0osYUFBYSxDQUFDLGdCQUFnQjtRQUM5QixhQUFhLENBQUMsb0JBQW9CO1FBQ2xDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDdkMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsY0FBc0IsRUFBRSxhQUE0QjtJQUNyRixPQUFPLENBQ0wsY0FBYztRQUNkLGFBQWEsQ0FBQyxTQUFTO1FBQ3ZCLGFBQWEsQ0FBQyxjQUFjO1FBQzVCLGFBQWEsQ0FBQyxZQUFZO1FBQzFCLGFBQWEsQ0FBQyxPQUFPO1FBQ3JCLGFBQWEsQ0FBQyxXQUFXO1FBQ3pCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQWlCLEVBQUUsVUFBa0I7SUFDbkUsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxTQUFpQixFQUFFLE1BQWM7SUFDdkUsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXNCO0lBQ2xELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNGLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVsRSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0UsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVsRSxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVsRyxPQUFPO1FBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM3QyxNQUFNO1FBQ04sY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUMxRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDMUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztLQUMzRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvQW1vdW50LCB0b0Jhc2VUcnkgfSBmcm9tICcuL2N1cnJlbmN5LnV0aWxzJztcclxuaW1wb3J0IHsgaW5kZXhJdGVtc0J5U3lzdGVtQ29kZSwgcmVzb2x2ZUl0ZW1zIH0gZnJvbSAnLi9pdGVtLXJlc29sdmVyJztcclxuaW1wb3J0IHsgYnVpbGRDb21wdXRlZEJhc2VCeUNvZGUsIGJ1aWxkQ29zdFN0YWdlcyB9IGZyb20gJy4vc3RhZ2UtYnVpbGRlcic7XHJcbmltcG9ydCB7IENvc3RSZXN1bHQsIEVuZ2luZVJlcXVlc3QsIFJlc29sdmVkSXRlbXMgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTG9zcyhyYXdPaWxUcnk6IG51bWJlciwgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyk6IG51bWJlciB7XHJcbiAgcmV0dXJuIChcclxuICAgICgocmF3T2lsVHJ5ICsgcmVzb2x2ZWRJdGVtcy5wb3J0ICsgcmVzb2x2ZWRJdGVtcy5pbnNwZWN0aW9uQ3VzdG9tcyArIHJlc29sdmVkSXRlbXMuZnJlaWdodCkgKlxyXG4gICAgICByZXNvbHZlZEl0ZW1zLmxvc3NSYXRlKSAvXHJcbiAgICAxMDBcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUHJvZHVjdGlvbkNvc3QoXHJcbiAgcmF3T2lsVHJ5OiBudW1iZXIsXHJcbiAgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyxcclxuICBsb3NzOiBudW1iZXIsXHJcbik6IG51bWJlciB7XHJcbiAgcmV0dXJuIChcclxuICAgIHJhd09pbFRyeSArXHJcbiAgICByZXNvbHZlZEl0ZW1zLnBvcnQgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5pbnNwZWN0aW9uQ3VzdG9tcyArXHJcbiAgICByZXNvbHZlZEl0ZW1zLmZyZWlnaHQgK1xyXG4gICAgbG9zcyArXHJcbiAgICByZXNvbHZlZEl0ZW1zLnJlZmluZXJ5T3ZlcmhlYWQgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5yZWZpbmVyeUF1eE1hdGVyaWFscyArXHJcbiAgICByZXNvbHZlZEl0ZW1zLmZpbGxpbmdQYWNrYWdpbmdPdmVyaGVhZFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVUb3RhbENvc3QocHJvZHVjdGlvbkNvc3Q6IG51bWJlciwgcmVzb2x2ZWRJdGVtczogUmVzb2x2ZWRJdGVtcyk6IG51bWJlciB7XHJcbiAgcmV0dXJuIChcclxuICAgIHByb2R1Y3Rpb25Db3N0ICtcclxuICAgIHJlc29sdmVkSXRlbXMucGFja2FnaW5nICtcclxuICAgIHJlc29sdmVkSXRlbXMuc2FsZXNNYXJrZXRpbmcgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5nZW5lcmFsQWRtaW4gK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy5maW5hbmNlICtcclxuICAgIHJlc29sdmVkSXRlbXMuY29udGluZ2VuY3kgK1xyXG4gICAgcmVzb2x2ZWRJdGVtcy52YXJpYWJsZURlcHJlY2lhdGlvblxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQcm9maXQodG90YWxDb3N0OiBudW1iZXIsIHByb2ZpdFJhdGU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgcmV0dXJuICh0b3RhbENvc3QgKiBwcm9maXRSYXRlKSAvIDEwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVRvdGFsU2FsZVByaWNlKHRvdGFsQ29zdDogbnVtYmVyLCBwcm9maXQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgcmV0dXJuIHRvdGFsQ29zdCArIHByb2ZpdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUNvc3QocmVxdWVzdDogRW5naW5lUmVxdWVzdCk6IENvc3RSZXN1bHQge1xyXG4gIGNvbnN0IHsgcmF0ZVVzZCwgcmF0ZUV1ciB9ID0gcmVxdWVzdDtcclxuICBjb25zdCByYXdPaWxUcnkgPSB0b0Jhc2VUcnkocmVxdWVzdC5yYXdPaWxQcmljZSwgcmVxdWVzdC5yYXdPaWxDdXJyZW5jeSwgcmF0ZVVzZCwgcmF0ZUV1cik7XHJcbiAgY29uc3QgaXRlbXNCeUNvZGUgPSBpbmRleEl0ZW1zQnlTeXN0ZW1Db2RlKHJlcXVlc3Quc3RhZ2VzKTtcclxuICBjb25zdCByZXNvbHZlZEl0ZW1zID0gcmVzb2x2ZUl0ZW1zKGl0ZW1zQnlDb2RlLCByYXRlVXNkLCByYXRlRXVyKTtcclxuXHJcbiAgY29uc3QgbG9zcyA9IGNhbGN1bGF0ZUxvc3MocmF3T2lsVHJ5LCByZXNvbHZlZEl0ZW1zKTtcclxuICBjb25zdCBwcm9kdWN0aW9uQ29zdCA9IGNhbGN1bGF0ZVByb2R1Y3Rpb25Db3N0KHJhd09pbFRyeSwgcmVzb2x2ZWRJdGVtcywgbG9zcyk7XHJcbiAgY29uc3QgdG90YWxDb3N0ID0gY2FsY3VsYXRlVG90YWxDb3N0KHByb2R1Y3Rpb25Db3N0LCByZXNvbHZlZEl0ZW1zKTtcclxuICBjb25zdCBwcm9maXQgPSBjYWxjdWxhdGVQcm9maXQodG90YWxDb3N0LCByZXNvbHZlZEl0ZW1zLnByb2ZpdFJhdGUpO1xyXG4gIGNvbnN0IHRvdGFsU2FsZVByaWNlID0gY2FsY3VsYXRlVG90YWxTYWxlUHJpY2UodG90YWxDb3N0LCBwcm9maXQpO1xyXG5cclxuICBjb25zdCBjb21wdXRlZEJhc2VCeUNvZGUgPSBidWlsZENvbXB1dGVkQmFzZUJ5Q29kZShyZXNvbHZlZEl0ZW1zLCBsb3NzLCBwcm9maXQpO1xyXG4gIGNvbnN0IHN0YWdlcyA9IGJ1aWxkQ29zdFN0YWdlcyhyZXF1ZXN0LnN0YWdlcywgY29tcHV0ZWRCYXNlQnlDb2RlLCBpdGVtc0J5Q29kZSwgcmF0ZVVzZCwgcmF0ZUV1cik7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICByYXdPaWw6IHRvQW1vdW50KHJhd09pbFRyeSwgcmF0ZVVzZCwgcmF0ZUV1ciksXHJcbiAgICBzdGFnZXMsXHJcbiAgICBwcm9kdWN0aW9uQ29zdDogdG9BbW91bnQocHJvZHVjdGlvbkNvc3QsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgdG90YWxDb3N0OiB0b0Ftb3VudCh0b3RhbENvc3QsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgcHJvZml0OiB0b0Ftb3VudChwcm9maXQsIHJhdGVVc2QsIHJhdGVFdXIpLFxyXG4gICAgdG90YWxTYWxlUHJpY2U6IHRvQW1vdW50KHRvdGFsU2FsZVByaWNlLCByYXRlVXNkLCByYXRlRXVyKSxcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CostItemSystemCode } from '@hitsoft/kadooglu-keops/proxy';
|
|
2
2
|
import { parseDecimal } from '../../../utils/number.utils';
|
|
3
|
-
import {
|
|
3
|
+
import { toBaseTry } from './currency.utils';
|
|
4
4
|
export function indexItemsBySystemCode(stages) {
|
|
5
5
|
const map = new Map();
|
|
6
6
|
for (const stage of stages) {
|
|
@@ -13,26 +13,26 @@ export function indexItemsBySystemCode(stages) {
|
|
|
13
13
|
return map;
|
|
14
14
|
}
|
|
15
15
|
export function resolveItems(itemsByCode, rateUsd, rateEur) {
|
|
16
|
-
const
|
|
16
|
+
const baseTry = (code) => {
|
|
17
17
|
const item = itemsByCode.get(code);
|
|
18
|
-
return item ?
|
|
18
|
+
return item ? toBaseTry(parseDecimal(item.value), item.currency, rateUsd, rateEur) : 0;
|
|
19
19
|
};
|
|
20
20
|
const ratePercent = (code) => parseDecimal(itemsByCode.get(code)?.value ?? 0);
|
|
21
21
|
return {
|
|
22
|
-
port:
|
|
23
|
-
inspectionCustoms:
|
|
24
|
-
freight:
|
|
22
|
+
port: baseTry(CostItemSystemCode.Port),
|
|
23
|
+
inspectionCustoms: baseTry(CostItemSystemCode.InspectionCustoms),
|
|
24
|
+
freight: baseTry(CostItemSystemCode.Freight),
|
|
25
25
|
lossRate: ratePercent(CostItemSystemCode.Loss),
|
|
26
|
-
refineryOverhead:
|
|
27
|
-
refineryAuxMaterials:
|
|
28
|
-
fillingPackagingOverhead:
|
|
29
|
-
packaging:
|
|
30
|
-
salesMarketing:
|
|
31
|
-
generalAdmin:
|
|
32
|
-
finance:
|
|
33
|
-
contingency:
|
|
34
|
-
variableDepreciation:
|
|
26
|
+
refineryOverhead: baseTry(CostItemSystemCode.RefineryOverhead),
|
|
27
|
+
refineryAuxMaterials: baseTry(CostItemSystemCode.RefineryAuxMaterials),
|
|
28
|
+
fillingPackagingOverhead: baseTry(CostItemSystemCode.FillingPackagingOverhead),
|
|
29
|
+
packaging: baseTry(CostItemSystemCode.Packaging),
|
|
30
|
+
salesMarketing: baseTry(CostItemSystemCode.SalesMarketing),
|
|
31
|
+
generalAdmin: baseTry(CostItemSystemCode.GeneralAdmin),
|
|
32
|
+
finance: baseTry(CostItemSystemCode.Finance),
|
|
33
|
+
contingency: baseTry(CostItemSystemCode.Contingency),
|
|
34
|
+
variableDepreciation: baseTry(CostItemSystemCode.VariableDepreciation),
|
|
35
35
|
profitRate: ratePercent(CostItemSystemCode.ProfitRate),
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9lbmdpbmUvaXRlbS1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzdDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsTUFBOEI7SUFFOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDbkQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDMUIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7Z0JBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNoQztTQUNGO0tBQ0Y7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixXQUE2QyxFQUM3QyxPQUFlLEVBQ2YsT0FBZTtJQUVmLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBd0IsRUFBVSxFQUFFO1FBQ25ELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUF3QixFQUFVLEVBQUUsQ0FDdkQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRWxELE9BQU87UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUN0QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7UUFDaEUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDNUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDOUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDO1FBQzlELG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUN0RSx3QkFBd0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLENBQUM7UUFDOUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7UUFDaEQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7UUFDMUQsWUFBWSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDdEQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDNUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7UUFDcEQsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLFVBQVUsRUFBRSxXQUFXLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0tBQ3ZELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29zdEl0ZW1TeXN0ZW1Db2RlIH0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBwYXJzZURlY2ltYWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9udW1iZXIudXRpbHMnO1xyXG5pbXBvcnQgeyBDb3N0Q2FsY3VsYXRpb25JdGVtLCBDb3N0Q2FsY3VsYXRpb25TdGFnZSB9IGZyb20gJy4uL2Nvc3QtY2FsY3VsYXRpb24ubW9kZWxzJztcclxuaW1wb3J0IHsgdG9CYXNlVHJ5IH0gZnJvbSAnLi9jdXJyZW5jeS51dGlscyc7XHJcbmltcG9ydCB7IFJlc29sdmVkSXRlbXMgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhJdGVtc0J5U3lzdGVtQ29kZShcclxuICBzdGFnZXM6IENvc3RDYWxjdWxhdGlvblN0YWdlW10sXHJcbik6IE1hcDxudW1iZXIsIENvc3RDYWxjdWxhdGlvbkl0ZW0+IHtcclxuICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgQ29zdENhbGN1bGF0aW9uSXRlbT4oKTtcclxuICBmb3IgKGNvbnN0IHN0YWdlIG9mIHN0YWdlcykge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHN0YWdlLml0ZW1zKSB7XHJcbiAgICAgIGlmIChpdGVtLnN5c3RlbUNvZGUgIT0gbnVsbCkge1xyXG4gICAgICAgIG1hcC5zZXQoaXRlbS5zeXN0ZW1Db2RlLCBpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbWFwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUl0ZW1zKFxyXG4gIGl0ZW1zQnlDb2RlOiBNYXA8bnVtYmVyLCBDb3N0Q2FsY3VsYXRpb25JdGVtPixcclxuICByYXRlVXNkOiBudW1iZXIsXHJcbiAgcmF0ZUV1cjogbnVtYmVyLFxyXG4pOiBSZXNvbHZlZEl0ZW1zIHtcclxuICBjb25zdCBiYXNlVHJ5ID0gKGNvZGU6IENvc3RJdGVtU3lzdGVtQ29kZSk6IG51bWJlciA9PiB7XHJcbiAgICBjb25zdCBpdGVtID0gaXRlbXNCeUNvZGUuZ2V0KGNvZGUpO1xyXG4gICAgcmV0dXJuIGl0ZW0gPyB0b0Jhc2VUcnkocGFyc2VEZWNpbWFsKGl0ZW0udmFsdWUpLCBpdGVtLmN1cnJlbmN5LCByYXRlVXNkLCByYXRlRXVyKSA6IDA7XHJcbiAgfTtcclxuICBjb25zdCByYXRlUGVyY2VudCA9IChjb2RlOiBDb3N0SXRlbVN5c3RlbUNvZGUpOiBudW1iZXIgPT5cclxuICAgIHBhcnNlRGVjaW1hbChpdGVtc0J5Q29kZS5nZXQoY29kZSk/LnZhbHVlID8/IDApO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgcG9ydDogYmFzZVRyeShDb3N0SXRlbVN5c3RlbUNvZGUuUG9ydCksXHJcbiAgICBpbnNwZWN0aW9uQ3VzdG9tczogYmFzZVRyeShDb3N0SXRlbVN5c3RlbUNvZGUuSW5zcGVjdGlvbkN1c3RvbXMpLFxyXG4gICAgZnJlaWdodDogYmFzZVRyeShDb3N0SXRlbVN5c3RlbUNvZGUuRnJlaWdodCksXHJcbiAgICBsb3NzUmF0ZTogcmF0ZVBlcmNlbnQoQ29zdEl0ZW1TeXN0ZW1Db2RlLkxvc3MpLFxyXG4gICAgcmVmaW5lcnlPdmVyaGVhZDogYmFzZVRyeShDb3N0SXRlbVN5c3RlbUNvZGUuUmVmaW5lcnlPdmVyaGVhZCksXHJcbiAgICByZWZpbmVyeUF1eE1hdGVyaWFsczogYmFzZVRyeShDb3N0SXRlbVN5c3RlbUNvZGUuUmVmaW5lcnlBdXhNYXRlcmlhbHMpLFxyXG4gICAgZmlsbGluZ1BhY2thZ2luZ092ZXJoZWFkOiBiYXNlVHJ5KENvc3RJdGVtU3lzdGVtQ29kZS5GaWxsaW5nUGFja2FnaW5nT3ZlcmhlYWQpLFxyXG4gICAgcGFja2FnaW5nOiBiYXNlVHJ5KENvc3RJdGVtU3lzdGVtQ29kZS5QYWNrYWdpbmcpLFxyXG4gICAgc2FsZXNNYXJrZXRpbmc6IGJhc2VUcnkoQ29zdEl0ZW1TeXN0ZW1Db2RlLlNhbGVzTWFya2V0aW5nKSxcclxuICAgIGdlbmVyYWxBZG1pbjogYmFzZVRyeShDb3N0SXRlbVN5c3RlbUNvZGUuR2VuZXJhbEFkbWluKSxcclxuICAgIGZpbmFuY2U6IGJhc2VUcnkoQ29zdEl0ZW1TeXN0ZW1Db2RlLkZpbmFuY2UpLFxyXG4gICAgY29udGluZ2VuY3k6IGJhc2VUcnkoQ29zdEl0ZW1TeXN0ZW1Db2RlLkNvbnRpbmdlbmN5KSxcclxuICAgIHZhcmlhYmxlRGVwcmVjaWF0aW9uOiBiYXNlVHJ5KENvc3RJdGVtU3lzdGVtQ29kZS5WYXJpYWJsZURlcHJlY2lhdGlvbiksXHJcbiAgICBwcm9maXRSYXRlOiByYXRlUGVyY2VudChDb3N0SXRlbVN5c3RlbUNvZGUuUHJvZml0UmF0ZSksXHJcbiAgfTtcclxufVxyXG4iXX0=
|