Initial commit

This commit is contained in:
Senad Uka
2018-06-11 11:09:35 +02:00
commit ed7df7b11f
1954 changed files with 483354 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<div id="add-virtual-products-container" class="col-md-12">
<form>
<div class="col-md-12 label-value-pair">
<label class="col-md-2">{{'packages.forms.VIRTUAL_PRODUCT_NAME' | translate}}</label>
<input class="col-md-3" type="text" placeholder="{{'packages.forms.VIRTUAL_PRODUCT_NAME' | translate}}" ng-model="name" required />
</div>
<div class="col-md-12 label-value-pair">
<label class="col-md-2">{{'packages.forms.VIRTUAL_PRODUCT_CATEGORY' | translate}}</label>
<select id="virtual-product-category-name"
class="form-control-static col-md-2"
ng-model="category"
ng-options="productCategory.category for productCategory in productCategories track by productCategory.id"
required>
</select>
</div>
<div class="col-md-12 label-value-pair">
<input type="submit"
id="add-virtual-product-button"
class="btn btn-info"
ng-click="addVirtualProduct()"
value="{{ 'packages.forms.buttons.ADD_VIRTUAL_PRODUCT' | translate }}"/>
</div>
</form>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="createPackagesBtn"
subModule="createPackages"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.CREATE_PACKAGES' | translate }}</button>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="create-packages-from-template-btn"
subModule="createPackagesFromTemplate"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.CREATE_PACKAGES_FROM_TEMPLATE' | translate }}</button>

View File

@@ -0,0 +1,4 @@
<div id="create-packages-layer"
ng-if="isSubmoduleVisible('createPackagesFromTemplate')">
<create-packages-from-template></create-packages-from-template>
</div>

View File

@@ -0,0 +1,219 @@
<div id="create-packages" class="dropzone-packages" ng-controller="createPackagesFromTemplateController" country-selected="{{countrySelected}}" ng-init="initializeCreatePackages()">
<h3>{{ 'packages.headers.CREATE_PACKAGES' | translate }} {{ 'packages.forms.' + getCountryTranslationKey() | translate:translationData }}</h3>
<div id="create-packages-countries" class="packages-countries form-group row justify-content-start">
<label for="selectCountry" class="package-label col-md-2">{{ 'packages.forms.CREATE_COUNTRY' | translate }}:</label>
<select id="selectCountry" class="form-control-static col-md-2" ng-model="selectedCountryId" ng-change="updateVirtualProducts()">
<option ng-repeat="countryInfo in countries" value={{countryInfo.id}}>
{{countryInfo.name}}
</option>
</select>
</div>
<div id="create-packages-from-template-select" class="packages-countries form-group row justify-content-start">
<label for="selectPackageTemplate" class="package-label col-md-2">{{ 'packages.forms.CREATE_FROM_TEMPLATE' | translate }}:</label>
<select id="selectPackageTemplate" class="form-control-static col-md-2" ng-model="idSelectedPackageTemplate" ng-change="updateVirtualProducts()">
<option ng-repeat="templateInfo in templates" value={{templateInfo.idTemplate}}>
{{templateInfo.templateName}}
</option>
</select>
</div>
<form ng-if="areTemplateAndCountrySelected()">
<div class="create-packages-name-description row">
<div class="create-package-type row justify-content-start col-md-12">
<label for="packagType" class="package-label col-md-2">{{ 'packages.forms.CREATE_TYPE' | translate }}:</label>
<select id="selectType" class="form-control-static col-md-2" ng-model="$parent.selectedPackageTypeId">
<option ng-repeat="type in packageTypes" value={{type.idPackageType}}>
{{type.packageType}}
</option>
</select>
</div>
<div class="create-package-name row justify-content-start col-md-12">
<label for="packageName" class="package-label col-md-2">{{ 'packages.forms.CREATE_NAME' | translate }}:</label>
<input type="text"
placeholder="{{ 'packages.forms.CREATE_NAME_PLACEHOLDER' | translate }}"
id="package-name"
required
class="create-package-name-input form-control-static col-md-5"
ng-model="$parent.packageName" />
</div>
<div class="create-package-reference row justify-content-start col-md-12">
<label for="packageReference" class="package-label col-md-2">{{ 'packages.forms.CREATE_REFERENCE' | translate }}:</label>
<input type="text"
placeholder="{{ 'packages.forms.CREATE_REFERENCE_PLACEHOLDER' | translate }}"
id="packageReference"
class="create-package-reference-input form-control-static col-md-5"
ng-model="$parent.packageReference" />
</div>
<div class="create-package-description row justify-content-start col-md-12">
<div class="col-md-8 create-package-description-text form-control-static">
<display-cdn-images image-params={{uploadParams}}></display-cdn-images>
</div>
<div class="col-md-4 create-package-description-text form-control-static">
<upload-image-cdn upload-params={{uploadParams}}></upload-image-cdn>
</div>
</div>
<div class="create-package-description row justify-content-start col-md-12">
<label for="packageDescription" class="package-label col-md-2">{{ 'packages.forms.CREATE_DESCRIPTION' | translate }}:</label>
<div class="create-package-description-text form-control-static col-md-5">
<textarea
ui-tinymce="tinymceOptions"
ng-model="$parent.packageDescription"></textarea>
</div>
<div class="col-md-6">
<div class="col-md-12">
<b>Template description:</b> {{getTemplateDescription()}}
</div>
</div>
</div>
<div id="set-additional-installation-days-from-template-container" class="col-md-12">
<label>{{'packages.tables.headers.additionalInstallationDays' | translate}}: </label>
<input id='set-additional-installation-days-from-template'
type="number"
name="installationDays" required
min="1" max="365" step="1"
class="days-input"
ng-model="$parent.additionalInstallationDays"/>
<span>{{'packages.tables.extra.DAYS' | translate}}</span>
</div>
</div>
<div id="create-package-from-template-container">
<div ng-repeat="(category, products) in productsByCategories"
id="package-{{category}}-from-template-container"
ng-if="isCategoryInTemplate(category)"
class="products-per-category-container">
<div class="create-packages-titles row">
<div class="create-package-title col-md-4">
{{getTitle(category, 'products', true)}} {{ 'packages.forms.SELECTED_COUNTRY' | translate:translationData }}
</div>
<div class="create-package-title col-md-5">
{{getTitle(category, 'packages', true)}} {{ 'packages.forms.SELECTED_COUNTRY' | translate:translationData }}
</div>
</div>
<div id="pack-{{category}}-from-template-container" class="create-packages-from-template-container row">
<div class="create-packages col-md-4">
<div class="list-by-category products-droppable-list package-list-{{category}}"
id="products-list-{{category}}"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'product\', 0, category)'}">
<div ng-repeat="(key, product) in products" class="create-package-row product-draggable"
data-drag="true"
jqyoui-draggable="{animate:true, onStart:'onDragStartFromProducts(product, key)', onStop:'onDragStop(product)', scroll: false}"
data-jqyoui-options="{revert: 'invalid', containment:'#package-{{category}}-from-template-container', scroll: false}">
<div ng-if="!checkIfIsString(product)">
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{product.productName}}
</div>
</div>
<div class="create-package-products-info-display">
<div class="create-package-product-info">
<div class="create-package-header">
{{'packages.forms.products.SUPPLIER_NAME' | translate}}:
</div>
<div class="create-package-product-info">
{{product.supplierName}}
</div>
<div class="create-package-header">
{{'packages.forms.products.PRICE' | translate}}:
</div>
<div class="create-package-product-info">
{{product.price}} (VAT {{product.vatPrice}})
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="create-packages col-md-4">
<div class="list-by-category package-list-{{category}}"
id="packages-list-{{category}}">
<div ng-repeat="(virtualProductKey, product) in packagesByCategories[category]" class="create-package-row">
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.VIRTUAL_PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{product.virtualName}}
</div>
<div ng-if="product.real"
class="real-product-in-package"
ng-repeat="(realProductKey, realProduct) in product.real"
data-drag="true"
jqyoui-draggable="{animate:true, onStart:'onDragStartFromPackage(virtualProductKey, realProductKey, realProduct.category)', onStop:'onDragStop(realProduct)', scroll: false}"
data-jqyoui-options="{revert: 'invalid', containment:'#package-{{category}}-from-template-container', scroll: false}">
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{realProduct.productName}}
</div>
</div>
<div class="create-package-products-info-display">
<div class="create-package-product-info">
<div class="create-package-header">
{{'packages.forms.products.SUPPLIER_NAME' | translate}}:
</div>
<div class="create-package-product-info">
{{realProduct.supplierName}}
</div>
<div class="create-package-header">
{{'packages.forms.products.PRICE' | translate}}:
</div>
<div class="create-package-product-info">
{{realProduct.price}} (VAT {{realProduct.vatPrice}})
</div>
</div>
</div>
</div>
<div class="real-products-container">
<div class="add-products-by-template real-product-{{category}}"
id="droppable-box-{{virtualProductKey}}"
ng-if="!product.real"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'package\', virtualProductKey, category)'}">
</div>
<div class="add-additional-products-by-template real-product-{{category}}"
id="droppable-box-additional-{{virtualProductKey}}"
ng-if="isAdditionalVirtualProductVisible(category)"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'package\', virtualProductKey, category)'}">
<span class="glyphicon glyphicon-plus"></span>
{{'packages.forms.ADD_MORE_REAL_PRODUCTS' | translate}}
</div>
</div>
</div>
<div class="product-quantity-box" ng-if="!isAdditionalVirtualProductVisible(category)">
<label for="createPackagesProductQuantity">{{ 'packages.forms.CREATE_QUANTITY' | translate }}:</label>
<input type="number"
name="productQuantity"
min="1" max="100" step="1"
class="product-quantity"
ng-model="productUnit[product.idProduct]"
ng-change="checkQuantityAmount(productUnit[product.idProduct])" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="arrows-icon col-md-1">
<span class="glyphicon glyphicon-transfer"></span>
</div>
</div>
<div class="create-from-template-btn" ng-if="packagesByCategories">
<input type="button"
id="create-package-from-template"
class="btn btn-info"
ng-click="createPackageFromTemplate()"
value="{{ 'packages.forms.buttons.CREATE_PACKAGE' | translate }}"/>
</div>
</form>
</div>

View File

@@ -0,0 +1,4 @@
<div id="create-packages-layer"
ng-if="isSubmoduleVisible('createPackages')">
<create-packages></create-packages>
</div>

View File

@@ -0,0 +1,14 @@
<div id="create-packages" class="dropzone-packages" ng-controller="createPackagesCtrl" country-selected="{{countrySelected}}" ng-init="initializeCreatePackages()">
<h3>{{ 'packages.headers.CREATE_PACKAGES' | translate }} {{ 'packages.forms.' + getCountryTranslationKey() | translate:translationData }}</h3>
<div id="create-packages-countries" class="packages-countries form-group row justify-content-start">
<label for="selectCountry" class="package-label col-md-2">{{ 'packages.forms.CREATE_COUNTRY' | translate }}:</label>
<select id="selectCountry" class="form-control-static col-md-2" ng-model="selectedCountryId" ng-change="setCountrySelectedName()">
<option ng-repeat="countryInfo in countries" value={{countryInfo.id}}>
{{countryInfo.name}}
</option>
</select>
</div>
<form ng-if="isCountrySelected()">
<products-by-categories-drag-drop action-type="create"></products-by-categories-drag-drop>
</form>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="create-template-packages-btn"
subModule="createTemplatePackages"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.CREATE_TEMPLATE_PACKAGES' | translate }}</button>

View File

@@ -0,0 +1,4 @@
<div id="create-template-packages-layer"
ng-if="isSubmoduleVisible('createTemplatePackages')">
<create-packages-template></create-packages-template>
</div>

View File

@@ -0,0 +1,6 @@
<div id="create-packages-templates" class="dropzone-packages">
<h3>{{ 'packages.headers.CREATE_TEMPLATE_PACKAGES' | translate }}</h3>
<form>
<products-template-by-categories-drag-drop action-type="create"></products-template-by-categories-drag-drop>
</form>
</div>

View File

@@ -0,0 +1,26 @@
<div ng-init="getImagesFromCdn()">
<div class="row justify-content-start col-md-12">
<label class="image-label col-md-3">Cover image:</label>
<div id="display-cover-image-cdn-container" class="col-md-9">
<div class="display-small-image col-md-2" ng-if="profilePicture.secure_url">
<img ng-src="{{profilePicture.secure_url}}" alt="Cover photo" class="cover-image-from-cdn" />
</div>
<input type="text" placeholder="{{ 'packages.forms.COVER_PHOTO_URL' | translate }}"
id="cover-photo-url"
class="cover-image-url-text form-control-static col-md-10"
ng-model="profilePicture.secure_url" />
</div>
</div>
<div class="row justify-content-start col-md-12">
<label class="image-label col-md-3">View images:</label>
<div id="display-image-cdn-container" class="col-md-9 images-from-cdn-container">
<div ng-repeat="(index, imageDetails) in images">
<div class="display-small-image">
<img ng-src="{{imageDetails.secure_url}}" alt="picture" class="image-from-cdn" />
</div>
<div class="url-from-cdn">
<span>{{imageDetails.secure_url}}</span>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="edit-package-templates-btn"
subModule="editPackageTemplates"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.EDIT_TEMPLATE_PACKAGES' | translate }}</button>

View File

@@ -0,0 +1,16 @@
<div id="edit-package-templates" class="dropzone-packages">
<h3>{{ 'packages.headers.EDIT_TEMPLATE_PACKAGES' | translate }} {{packageSelected.name}}</h3>
<div id="edit-package-templates-list" class="packages-countries row" ng-init="showSelectPackages()">
<label for="selectPackage" class="package-label col-md-2">{{'packages.forms.PACKAGE_SELECT' | translate}}:</label>
<select id="edit-package-templates-select"
ng-model="packageSelected"
ng-change="setPackageTemplateSelected()"
ng-init="showSelectPackages()"
class="form-control-static col-md-3"
ng-options="packageInfo.name for packageInfo in packageList track by packageInfo.id">
</select>
</div>
<form ng-if="isPackageSelected()">
<products-template-by-categories-drag-drop action-type="edit"></products-template-by-categories-drag-drop>
</form>
</div>

View File

@@ -0,0 +1,4 @@
<div id="edit-packages-layer"
ng-if="isSubmoduleVisible('editPackageTemplates')">
<edit-package-templates ng-controller="editPackageTemplatesCtrl" ng-init="getPackageTemplates()"></edit-packages-templates>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="edit-packages-btn"
subModule="editPackages"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.EDIT_PACKAGES' | translate }}</button>

View File

@@ -0,0 +1,4 @@
<div id="edit-packages-layer"
ng-if="isSubmoduleVisible('editPackages')">
<edit-packages ng-controller="editPackagesCtrl" ng-init="getCountries()"></edit-packages>
</div>

View File

@@ -0,0 +1,24 @@
<div id="edit-packages" class="dropzone-packages" country-selected="{{countrySelected}}">
<h3>{{ 'packages.headers.EDIT_PACKAGES' | translate }} {{ getEditPackagesTitle() }}</h3>
<div id="edit-packages-countries" class="packages-countries row justify-content-start">
<label for="selectCountry" class="package-label col-md-2">{{ 'packages.forms.CREATE_COUNTRY' | translate }}:</label>
<select id="selectCountry" class="form-control-static col-md-2" ng-model="selectedCountryId" ng-change="showSelectPackages()">
<option ng-repeat="countryInfo in countries" value={{countryInfo.id}}>
{{countryInfo.name}}
</option>
</select>
</div>
<div id="edit-package-list" class="packages-countries row" ng-init="showSelectPackages()" ng-if="isCountrySelected(selectedCountryId)">
<label for="selectPackage" class="package-label col-md-2">{{'packages.forms.PACKAGE_SELECT' | translate}}:</label>
<select id="create-process-package-select"
ng-model="$parent.packageSelected"
ng-change="setCountryAndPackageSelected()"
ng-init="showSelectPackages()"
class="form-control-static col-md-3"
ng-options="packageInfo.name for packageInfo in packageList track by packageInfo.id">
</select>
</div>
<form ng-if="isPackageSelected()">
<products-by-categories-drag-drop action-type="edit"></products-by-categories-drag-drop>
</form>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="my-packages-btn"
subModule="myPackages"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.SHOW_MY_PACKAGES' | translate }}</button>

View File

@@ -0,0 +1,119 @@
<div class="packages-details-layer row" ng-init="getProductsArray(data)">
<div class="col-md-4 package-description-layer">
<h4 class="package-header">
<span class="flag-icon flag-icon-{{data.countryCode}}"></span> {{data.name}}
</h4>
<div ng-bind-html="renderHtml(data.description)" class="package-description"></div>
</div>
<div class="col-md-8 package-info-layer">
<div ng-if="hasExtraPackages(data)" class="info-box col-md-4">
<div class="big-title">
{{'packages.headers.PACKAGE_OPTIONS_DETAILS' | translate}}:
</div>
<div class="info-group extra-option">
<div class="option-group" ng-repeat="group in data.extraPackages.groups">
<div class="small-title">
<span class="glyphicon glyphicon-folder-open"></span>
{{group.groupName}}
</div>
<div class="option-pacakge" ng-repeat="option in group.options">
{{option.packageName}}
<a ng-if="option.isAvailable"
href="packages?subModule=selectPackage&idPackage={{option.idPackage}}">
<span class="glyphicon glyphicon-pencil edit-icon"></span>
</a>
<span ng-if="!areAllPayTypesAvailable(data.prices.Default, option)"
class="glyphicon glyphicon {{getAlertIcon(option)}} warning-icon"
ng-click="showHideInfoBox(option)"></span>
<div ng-if="option.isInfoBoxVisible" class="{{getAlertClass(option)}} warning-message">
{{getAlertText(option)}}
</div>
</div>
</div>
</div>
<div class="big-title">
{{'packages.headers.ADDITIONAL_PACKAGES_DETAILS' | translate}}:
</div>
<div ng-if="data.extraPackages.additionalPackages.length" class="info-group additional-package">
<div class="additional" ng-repeat="additionalPackage in data.extraPackages.additionalPackages">
<div class="additional-pacakge">
{{additionalPackage.packageName}}
<a ng-if="additionalPackage.isAvailable"
href="packages?subModule=selectPackage&idPackage={{additionalPackage.idPackage}}">
<span class="glyphicon glyphicon-pencil edit-icon"></span>
</a>
<span ng-if="!areAllPayTypesAvailable(data.prices.Default, additionalPackage)"
class="glyphicon {{getAlertIcon(additionalPackage)}} warning-icon"
ng-click="showHideInfoBox(additionalPackage)"></span>
<div ng-if="additionalPackage.isInfoBoxVisible" class="{{getAlertClass(additionalPackage)}} warning-message">
{{getAlertText(additionalPackage)}}
</div>
</div>
</div>
</div>
</div>
<div class="info-box col-md-4">
<div class="big-title">
{{'packages.headers.PRODUCTS' | translate}}:
</div>
<div class="info-group">
<div class="product-in-package-{{data.id}}" ng-repeat="product in productsArray">
{{product}}
</div>
</div>
</div>
</div>
</div>
<div class="my-packages-details-layer row">
<div ng-repeat="(customer, price_list) in data.prices">
<div class="comission-headers">
<div class="price-col">
<div class="customer-name">
{{customer}}
</div>
</div>
<div class="price-col">{{'packages.headers.MINIMAL_SELL_PRICE' | translate}}</div>
<div class="price-col">{{'packages.headers.MY_COMMISSION' | translate}}</div>
<div class="price-col">{{'packages.headers.CUSTOMER_PRICE' | translate}}</div>
<div class="price-col-small">{{'packages.headers.VISIBLE_TO_CUSTOMER' | translate}}</div>
</div>
<div ng-repeat="price in price_list" class="price-group">
<div class="pay-type">
{{'packages.headers.PAY_TYPE' | translate}}: {{price.payType}}
</div>
<div class="price-row">
<div class="price-col">
{{'packages.headers.FIXED' | translate}}:
</div>
<div class="price-col">
{{price.minimalFixedPrice}}
</div>
<div class="price-col">
{{price.fixedCommission}}
</div>
<div class="price-col">
{{sumPrices([price.minimalFixedPrice, price.fixedCommission])}}
</div>
<div class="price-col-small">
<span class="glyphicon {{isVisibleToCustomer(price.visibleToCustomer)}}"></span>
</div>
</div>
<div class="price-row">
<div class="price-col">
{{'packages.headers.MONTHLY_RECURENCE' | translate}}:
</div>
<div class="price-col">
{{sumPrices([price.minimalRecurentPrice, price.minimalServicesPrice])}}
</div>
<div class="price-col">
{{price.recurentCommission}}
</div>
<div class="price-col">
{{sumPrices([price.minimalRecurentPrice, price.minimalServicesPrice, price.recurentCommission, price.recurentServicesCommission])}}
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,9 @@
<div class="row">
<div class="col-sm-12"
id="my-packages-layer"
ng-if="isSubmoduleVisible('myPackages')"
ng-init="getMyPackages()">
<h3>{{ 'packages.headers.SHOW_MY_PACKAGES' | translate }}</h3>
<table class="table table-striped table-hover" id="my-packages-tabel"></table>
</div>
</div>

View File

@@ -0,0 +1,142 @@
<div class="col-md-12">
<h3 class="col-md-12">{{ 'packages.headers.MANAGE_PACKAGE_OPTIONS' | translate }}</h3>
<div class="all-packages-layer col-md-4">
<div class="options-container">
<div class="options-header">{{ 'packages.headers.SELECT_PACKAGE_FOR_OPTIONS' | translate }}</div>
<div class="options-list">
<div ng-click="selectPackage(package)" class="package-layer {{getPackageClass(package)}}" ng-repeat="package in standardPackages">
<span class="flag-icon flag-icon-{{package.countryCode}}"></span> {{package.packageName}}
</div>
</div>
</div>
</div>
<div class="options-link-area col-md-8">
<div class="options-big-container col-md-12">
<div class="col-md-6">
<div id="linked-package-options" class="options-container">
<div class="options-header">{{selectedPackage.packageName}} {{ 'packages.headers.PACKGE_OPTIONS' | translate }}</div>
<div id="linked-package-options-list" class="options-list">
<div id="option-group-{{group.idGroup}}" class="option-group"
data-drop="true"
jqyoui-droppable="{onDrop:'packageOptionAdded(\'option-group\', group)'}"
ng-repeat="(index, group) in selectedPackage.groups">
<div class="option-group-name">
<input type="text"
placeholder="{{ 'packages.headers.GROUP_NAME' | translate }}"
ng-model="group.groupName"/>
<div ng-click="removeGroup(index)" class="btn btn-danger remove-group">
<span class="glyphicon glyphicon-remove"></span>
</div>
</div>
<div class="linked-options-layer option-row linked {{getPackageWarningClass(option.hasAllPrices)}}"
data-drag="true"
drop-to="all-options"
id-option-package="{{option.idPackage}}"
id-group="{{group.idGroup}}"
jqyoui-draggable="{animate:true, onStart:'packageDragStart(\'linked-package-options-list\')', onStop:'packageDragStop(\'linked-package-options-list\')', scroll: false}"
data-jqyoui-options="{revert: true}"
ng-repeat="option in group.options">
{{option.packageName}}
<span ng-if="!option.hasAllPrices">
<span class="glyphicon glyphicon-warning-sign"></span>
{{ 'packages.messages.NOT_ALL_PAY_AVAILABLE' | translate }}
</span>
<div ng-if="isDefault(option)" class="default-value">{{ 'packages.headers.DEFAULT' | translate }}</div>
<div ng-if="!isDefault(option)"
ng-click="setDefaultOption(group, option)"
class="btn btn-primary default-btn">{{ 'packages.buttons.SET_DEFAULT' | translate }}</div>
</div>
</div>
<div ng-click="addGroup()" class="btn btn-primary add-btn">
<span class="glyphicon glyphicon-plus"></span> {{ 'packages.buttons.ADD_GROUP' | translate }}
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div id="all-options"
data-drop="true"
jqyoui-droppable="{onDrop:'packageOptionRemoved(\'all-options\')'}"
class="options-container">
<div class="options-header">{{ 'packages.headers.AVAILABLE_OPTIONS' | translate }}</div>
<div id="all-options-list" class="options-list all-options-list">
<div ng-if="option.isAvailable"
class="all-options-layer option-row not-linked {{getPackageWarningClass(option.hasAllPrices)}}"
data-drag="true"
drop-to="option-group"
id-option-package="{{option.idPackage}}"
jqyoui-draggable="{animate:true, onStart:'packageDragStart(\'all-options-list\')', onStop:'packageDragStop(\'all-options-list\')', scroll: false}"
data-jqyoui-options="{revert: true}"
ng-repeat="option in options">
{{option.packageName}}
<span ng-if="!option.hasAllPrices">
<span class="glyphicon glyphicon-warning-sign"></span>
{{ 'packages.messages.NOT_ALL_PAY_AVAILABLE' | translate }}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="options-link-area col-md-8 col-md-offset-4">
<div class="options-big-container col-md-12">
<div class="col-md-6">
<div class="options-container">
<div class="options-header">{{selectedPackage.packageName}} {{ 'packages.headers.ADDITIONAL_PACKAGES' | translate }}</div>
<div id="linked-package-additional-list"
data-drop="true"
jqyoui-droppable="{onDrop:'packageAdditionalAdded(\'linked-package-additional-list\')'}"
class="options-list linked-package-additional-list">
<div class="linked-additionals-layer option-row linked {{getPackageWarningClass(additionalPackage.hasAllPrices)}}"
data-drag="true"
drop-to="all-additional-list"
id-additional-package="{{additionalPackage.idPackage}}"
jqyoui-draggable="{animate:true, onStart:'packageDragStart(\'linked-package-additional-list\')', onStop:'packageDragStop(\'linked-package-additional-list\')', scroll: false}"
data-jqyoui-options="{revert: true}"
ng-repeat="additionalPackage in selectedPackage.additionalPackages">
{{additionalPackage.packageName}}
<span ng-if="!additionalPackage.hasAllPrices">
<span class="glyphicon glyphicon-warning-sign"></span>
{{ 'packages.messages.NOT_ALL_PAY_AVAILABLE' | translate }}
</span>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="options-container">
<div class="options-header">{{ 'packages.headers.AVAILABLE_ADDITIONAL' | translate }}</div>
<div id="all-additional-list"
data-drop="true"
jqyoui-droppable="{onDrop:'packageAdditionalRemoved(\'all-additional-list\')'}"
class="options-list all-additional-list">
<div class="all-additional-layer option-row not-linked {{getPackageWarningClass(additionalPackage.hasAllPrices)}}"
ng-if="additionalPackage.isAvailable"
data-drag="true"
drop-to="linked-package-additional-list"
id-additional-package="{{additionalPackage.idPackage}}"
jqyoui-draggable="{animate:true, onStart:'packageDragStart(\'all-additional-list\')', onStop:'packageDragStop(\'all-additional-list\')', scroll: false}"
data-jqyoui-options="{revert: true}"
ng-repeat="additionalPackage in additionalPackages">
{{additionalPackage.packageName}}
<span ng-if="!additionalPackage.hasAllPrices">
<span class="glyphicon glyphicon-warning-sign"></span>
{{ 'packages.messages.NOT_ALL_PAY_AVAILABLE' | translate }}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="options-link-buttons col-md-12">
<div class="btn btn-primary" ng-click="updatePackageOptions()">
{{ 'packages.buttons.SAVE' | translate }}
</div>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button"
id="package-options-btn"
subModule="packageOptions"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.PACKAGE_OPTIONS' | translate }}</button>

View File

@@ -0,0 +1,5 @@
<div id="package-optios-layer"
class="row"
ng-if="isSubmoduleVisible('packageOptions')">
<package-options ng-controller="packageOptionsCtrl" ng-init="getOptionsAndPackages()"></package-options>
</div>

View File

@@ -0,0 +1,104 @@
<div class="packages-details-layer row" ng-init="getProductsArray(data)">
<div class="col-md-4 package-description-layer">
<h4 class="package-header">
<span class="flag-icon flag-icon-{{data.countryCode}}"></span> {{data.name}}
</h4>
<div ng-bind-html="renderHtml(data.description)" class="package-description"></div>
</div>
<div class="col-md-8 package-info-layer">
<div class="info-box col-md-4">
<div class="big-title">
<span class="glyphicon glyphicon-list-alt"></span>
{{'packages.headers.PAY_PLANS' | translate}}:
<?php
if($user->getUserType() === USER_TYPES['BROKER']){
require('packagesDetailsBroker/PackagesDetailsBrokerSetPriceBtn.html');
}
?>
</div>
<div class="info-group extra-option">
<div class="price-type" ng-repeat="price in data.prices">
{{price.payType}}
</div>
</div>
</div>
<div ng-if="hasExtraPackages(data)" class="info-box col-md-4">
<div class="big-title">
{{'packages.headers.PACKAGE_OPTIONS_DETAILS' | translate}}:
<?php
if($user->getUserType() === USER_TYPES['BROKER']){
require('packagesDetailsBroker/PackagesDetailsBrokerLinkOptionsBtn.html');
}
?>
</div>
<div class="info-group extra-option">
<div class="option-group" ng-repeat="group in data.extraPackages.groups">
<div class="small-title">
<span class="glyphicon glyphicon-folder-open"></span>
{{group.groupName}}
</div>
<div class="option-pacakge" ng-repeat="option in group.options">
{{option.packageName}}
<?php
if($user->getUserType() === USER_TYPES['BROKER']){
require('packagesDetailsBroker/PackagesDetailsBrokerSetOptionPriceBtn.html');
}
?>
<span ng-if="!areAllPayTypesAvailable(data.prices, option.prices)"
class="glyphicon glyphicon glyphicon-warning-sign warning-icon"
ng-click="showHideInfoBox(option)"></span>
<div ng-if="option.isInfoBoxVisible" class="alert-warning warning-message">
{{'packages.messages.NOT_ALL_PAY_AVAILABLE' | translate}}
</div>
</div>
</div>
</div>
<div class="big-title">
{{'packages.headers.ADDITIONAL_PACKAGES_DETAILS' | translate}}:
<?php
if($user->getUserType() === USER_TYPES['BROKER']){
require('packagesDetailsBroker/PackagesDetailsBrokerLinkOptionsBtn.html');
}
?>
</div>
<div ng-if="data.extraPackages.additionalPackages.length" class="info-group additional-package">
<div class="additional" ng-repeat="additionalPackage in data.extraPackages.additionalPackages">
<div class="additional-pacakge">
{{additionalPackage.packageName}}
<?php
if($user->getUserType() === USER_TYPES['BROKER']){
require('packagesDetailsBroker/PackagesDetailsBrokerSetAdditonalPriceBtn.html');
}
?>
<span ng-if="!areAllPayTypesAvailable(data.prices, additionalPackage.prices)"
class="glyphicon glyphicon glyphicon-warning-sign warning-icon"
ng-click="showHideInfoBox(additionalPackage)"></span>
<div ng-if="additionalPackage.isInfoBoxVisible" class="alert-warning warning-message">
{{'packages.messages.NOT_ALL_PAY_AVAILABLE' | translate}}
</div>
</div>
</div>
</div>
<div ng-if="!data.extraPackages.additionalPackages.length">-</div>
</div>
<div class="info-box col-md-4">
<div class="big-title">
{{'packages.headers.PRODUCTS' | translate}}:
</div>
<div class="info-group">
<div class="product-in-package-{{data.id}}" ng-repeat="product in productsArray">
{{product}}
</div>
</div>
</div>
<div ng-if="!hasExtraPackages(data)" class="info-box col-md-4">
<?php
if($user->getUserType() === USER_TYPES['BROKER']){
require('packagesDetailsBroker/PackagesDetailsBrokerLinkOptionsBigBtn.html');
}
?>
</div>
</div>
</div>

View File

@@ -0,0 +1,48 @@
<button type="button"
id="packagesBtn"
subModule="packages"
class="btn btn-default"
ng-click="setSubModule($event)">{{ 'packages.buttons.SHOW_PACKAGES' | translate }}</button>
<?php
if($user->getUserType() === USER_TYPES['COMMERCIAL_LEAD']){
require_once('MyPackagesBtn.html');
}
if($user->getUserType() === USER_TYPES['BROKER']){
require_once('CreatePackagesButton.html');
require_once('CreatePackagesFromTemplateButton.html');
require_once('CreateTemplatePackagesButton.html');
require_once('EditPackagesButton.html');
require_once('EditPackageTemplatesButton.html');
require_once('PackageOptionsTemplateButton.html');
}
?>
<div class="row">
<div class="col-sm-12"
id="packages-layer"
ng-if="isSubmoduleVisible('packages')"
ng-init="getPackages()">
<h3>{{ 'packages.headers.SHOW_PACKAGES' | translate }}</h3>
<table class="table table-striped table-hover" id="packages-tabel"></table>
</div>
</div>
<?php
if($user->getUserType() === USER_TYPES['COMMERCIAL_LEAD']){
require_once('MyPackagesLayer.html');
require_once('SelectPackageLayer.html');
}
if($user->getUserType() === USER_TYPES['BROKER']){
require_once('CreatePackagesLayer.html');
require_once('EditPackagesLayer.html');
require_once('EditPackageTemplatesLayer.html');
require_once('CreatePackagesFromTemplateLayer.html');
require_once('CreateTemplatePackagesLayer.html');
require_once('SetPackagePriceLayer.html');
require_once('PackageOptionsTemplateLayer.html');
}
?>

View File

@@ -0,0 +1,180 @@
{{selectedCountryId}}
<div class="create-packages-name-description row">
<div class="create-package-type row justify-content-start col-md-12">
<label for="packagType" class="package-label col-md-2">{{ 'packages.forms.CREATE_TYPE' | translate }}:</label>
<select id="selectType"
class="form-control-static col-md-2"
ng-model="selectedPackageTypeId">
<option ng-repeat="type in packageTypes" value="{{type.idPackageType}}">
{{type.packageType}}
</option>
</select>
</div>
<div class="create-package-name row justify-content-start col-md-12">
<label for="packageName" class="package-label col-md-2">{{ 'packages.forms.CREATE_NAME' | translate }}:</label>
<input type="text" placeholder="{{ 'packages.forms.CREATE_NAME_PLACEHOLDER' | translate }}"
id="package-name-{{actionType}}" required
class="create-package-name-input form-control-static col-md-5"
ng-model="packageName" />
</div>
<div class="create-package-reference row justify-content-start col-md-12">
<label for="packageReference" class="package-label col-md-2">{{ 'packages.forms.CREATE_REFERENCE' | translate }}:</label>
<input type="text" placeholder="{{ 'packages.forms.CREATE_REFERENCE_PLACEHOLDER' | translate }}"
id="package-reference-{{actionType}}"
class="create-package-reference-input form-control-static col-md-5"
ng-model="packageReference" />
</div>
<div class="create-package-description row justify-content-start col-md-12">
<div class="col-md-8 create-package-description-text form-control-static">
<display-cdn-images image-params={{imageParams}}></display-cdn-images>
</div>
<div class="col-md-4 create-package-description-text form-control-static">
<upload-image-cdn upload-params={{uploadParams}}></upload-image-cdn>
</div>
</div>
<div id="package-description-{{actionType}}" class="create-package-description row justify-content-start col-md-12">
<label for="packageDescription" class="package-label col-md-2">{{ 'packages.forms.CREATE_DESCRIPTION' | translate }}:</label>
<div class="col-md-6 create-package-description-text form-control-static">
<textarea
ui-tinymce="tinymceOptions"
ng-model="packageDescription"></textarea>
</div>
</div>
<div id="set-additional-installation-days-container" class="col-md-12" ng-if="packageHasInstallation[actionType]">
<label>{{'packages.tables.headers.additionalInstallationDays' | translate}}: </label>
<input id='set-additional-installation-days'
type="number"
name="instDay"
min="1" max="365" step="1"
class="days-input"
ng-model="additionalInstallationDays"/>
<span>{{'packages.tables.extra.DAYS' | translate}}</span>
</div>
</div>
<div id="create-packages-container">
<div ng-repeat="(category, products) in productsByCategories"
id="package-{{category}}-container"
class="products-per-category-container">
<div class="create-packages-titles row">
<div class="create-package-title col-md-4">
{{getTitle(category, 'products', false)}} {{ 'packages.forms.SELECTED_COUNTRY' | translate:translationData }}
</div>
<div class="create-package-title col-md-5">
{{getTitle(category, 'packages', false)}} {{ 'packages.forms.SELECTED_COUNTRY' | translate:translationData }}
</div>
</div>
<div id="pack-{{category}}-container" class="create-packages-container row">
<div class="create-packages col-md-4">
<div class="list-by-category products-droppable-list package-list-{{category}}"
id="package-products-list-{{category}}"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'product\', category)'}">
<div ng-repeat="(key, product) in products" class="create-package-row product-draggable"
data-drag="true"
jqyoui-draggable="{animate:true, onStart:'onDragStartFromProducts(product, key)', onStop:'onDragStop(product)', scroll: false}"
data-jqyoui-options="{revert: 'invalid', containment:'#pack-{{category}}-container', scroll: false}">
<div>
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{product.productName}}
</div>
</div>
<div class="create-package-products-info-display">
<div class="create-package-product-info">
<div class="create-package-header">
{{'packages.forms.products.SUPPLIER_NAME' | translate}}:
</div>
<div class="create-package-product-info">
{{product.supplierName}}
</div>
<div class="create-package-header">
{{'packages.forms.products.PRICE' | translate}}:
</div>
<div class="create-package-product-info">
{{product.price}} (VAT {{product.vatPrice}})
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="create-packages col-md-4">
<div class="list-by-category {{category}}-in-package package-list-{{category}}"
id="packages-list-{{category}}"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'package\', category)'}">
<div class="create-package-row {{isAvailableClass(product.isAvailable)}}"
ng-repeat="(packageProductKey, product) in packagesByCategories[category]"
data-drag="true"
jqyoui-draggable="{animate:true, onStart:'onDragStartFromPackage(product, packageProductKey)', onStop:'onDragStop(product)', scroll: false}"
data-jqyoui-options="{revert: 'invalid', containment:'#pack-{{category}}-container', scroll: false}">
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{product.productName}}
</div>
</div>
<div class="create-package-products-info-display">
<div class="create-package-product-info">
<div class="create-package-header">
{{'packages.forms.products.SUPPLIER_NAME' | translate}}:
</div>
<div class="create-package-product-info">
{{product.supplierName}}
</div>
<div class="create-package-header">
{{'packages.forms.products.PRICE' | translate}}:
</div>
<div class="create-package-product-info">
{{product.price}} (VAT {{product.vatPrice}})
</div>
</div>
</div>
<div class="product-quantity-box" ng-if="showQuantityField(product.category)">
<label for="createPackagesProductQuantity">{{ 'packages.forms.CREATE_QUANTITY' | translate }}:</label>
<input id='{{actionType}}-package-quantity-{{product.idProduct}}'
type="number"
name="productQuantity"
min="1" max="100" step="1"
class="product-quantity"
ng-model="productUnit[product.idProduct]"
ng-change="checkQuantityAmount(productUnit[product.idProduct])" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="arrows-icon col-md-1">
<span class="glyphicon glyphicon-transfer"></span>
</div>
</div>
<div class="packages-buttons row">
<div class="col-md-7" ng-if="packagesByCategories">
<input type="submit"
id="{{actionType}}-package"
class="btn btn-info"
ng-click="updatePackage()"
value="{{getButtonTitle()}}"/>
</div>
<div class="reset-button col-md-4" ng-if="isResetBtnVisible()">
<input type="submit"
id="reset-package-btn"
class="btn btn-primary"
ng-click="resetProducts()"
value="{{ 'packages.buttons.RESET' | translate }}"/>
</div>
</div>

View File

@@ -0,0 +1,121 @@
<div class="create-packages-name-description row">
<div class="create-package-name row justify-content-start col-md-12">
<label for="packageName" class="package-label col-md-2">{{ 'packages.forms.CREATE_NAME' | translate }}:</label>
<input type="text" placeholder="{{ 'packages.forms.CREATE_NAME_PLACEHOLDER' | translate }}"
id="package-name-template-{{actionType}}" required
class="create-package-name-input form-control-static col-md-5"
ng-model="packageName" />
</div>
<div class="create-package-description row justify-content-start col-md-12">
<label for="packageDescription" class="package-label col-md-2">{{ 'packages.forms.CREATE_DESCRIPTION' | translate }}:</label>
<textarea id="package-description-template-{{actionType}}" required
placeholder="{{ 'packages.forms.CREATE_DESCRIPTION_PLACEHOLDER' | translate }}"
class="create-package-description-text form-control-static col-md-5"
ng-model="packageDescription"/>
</div>
</div>
<div id="add-new-virtual-product-template" ng-if="actionType === 'create'" class="row">
<div id="headers-col-available" class="headers-col">
<h3>{{'packages.headers.NEW_VIRTUAL_PRODUCT' | translate}}</h3>
<div id="add-new-virtual-product" class="btn btn-primary" ng-click="enableAddNewVirtualProducts()">{{'packages.buttons.NEW_VIRTUAL_PRODUCT' | translate}}</div>
</div>
<add-virtual-products
ng-if="isAddVirtualProductsFormVisible()"
ng-controller="addVirtualProductsCtrl"
ng-init="getProductCategories()"></add-virtual-products>
</div>
<div id="update-packages-templates-container">
<div ng-repeat="(category, products) in productsByCategories"
id="{{actionType}}-package-template-{{category}}-container"
class="products-per-category-container">
<div class="create-packages-titles row">
<div class="create-package-title col-md-4">
{{getTitle(category, 'products', true)}}
</div>
<div class="create-package-title col-md-5">
{{getTitle(category, 'packages', true)}}
</div>
</div>
<div id="{{actionType}}-pack-template-{{category}}-container" class="create-packages-container row">
<div class="create-packages col-md-4">
<div class="list-by-category products-droppable-list package-list-{{category}}"
id="{{actionType}}-package-template-products-list-{{category}}"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'product\', category)'}">
<div ng-repeat="(key, product) in products" class="create-package-row product-draggable"
data-drag="true"
jqyoui-draggable="{animate:true, onStart:'onDragStartFromProducts(product, key)', onStop:'onDragStop(product)', scroll: false}"
data-jqyoui-options="{revert: 'invalid', containment:'#{{actionType}}-pack-template-{{category}}-container', scroll: false}">
<div>
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{product.productName}}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="create-packages col-md-4">
<div id="{{actionType}}-packages-template-list-{{category}}"
class="list-by-category {{category}}-in-package package-list-{{category}}"
data-drop="true"
jqyoui-droppable="{onDrop:'productDropped(\'package\', category)'}">
<div class="create-package-row"
ng-repeat="(packageProductKey, product) in packagesByCategories[category]"
data-drag="true"
jqyoui-draggable="{animate:true, onStart:'onDragStartFromPackage(product, packageProductKey)', onStop:'onDragStop(product)', scroll: false}"
data-jqyoui-options="{revert: 'invalid', containment:'#{{actionType}}-pack-template-{{category}}-container', scroll: false}">
<div class="create-package-products-display">
<div class="create-package-header">
{{'packages.forms.products.PRODUCT_NAME' | translate}}:
</div>
<div class="create-package-product">
{{product.productName}}
</div>
</div>
<div class="product-quantity-box" ng-if="showQuantityField(product.category)">
<label for="createPackagesProductQuantity">{{ 'packages.forms.CREATE_QUANTITY' | translate }}:</label>
<input id='{{actionType}}-package-template-quantity-{{product.idProduct}}'
type="number"
name="productQuantity"
min="1" max="100" step="1"
class="product-quantity"
ng-model="productUnit[product.idProduct]"
ng-change="checkQuantityAmount(productUnit[product.idProduct])" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="arrows-icon col-md-1">
<span class="glyphicon glyphicon-transfer"></span>
</div>
</div>
<div class="packages-buttons row">
<div class="col-md-7" ng-if="packagesByCategories">
<input id="{{actionType}}-package-template"
type="submit"
class="btn btn-info"
ng-click="updatePackage()"
value="{{getButtonTitle()}}"/>
</div>
<div class="reset-button col-md-4" ng-if="isResetBtnVisible()">
<input id="{{actionType}}-template-reset-package-btn"
type="submit"
class="btn btn-primary"
ng-click="resetProducts()"
value="{{ 'packages.buttons.RESET' | translate }}"/>
</div>
</div>

View File

@@ -0,0 +1,259 @@
<div id="select-packages-steps">
<div class="set-default-prices step active-step">1. {{'packages.headers.SET_DEFAULT_PRICES' | translate}}</div>
<div class="step-link"></div>
<div class="select-commissions step inactive-step">2. {{'packages.headers.SET_COMMISSIONS' | translate}}</div>
</div>
<div id="select-packages-all" class="row">
<div id="package-info" class="col-md-6">
<h4>{{packageInfo.name}} ({{'packages.headers.SOLD_IN' | translate}} {{packageInfo.country}})</h4>
<div ng-bind-html="renderHtml(packageInfo.description)" class="package_description"></div>
</div>
<h5>{{'packages.headers.PRODUCTS' | translate}}:</h5>
<div class="products-list">
<div class="package-category" ng-repeat="(productCategory, produccts) in packageProducts">
<div class="product-category-title">{{productCategory}} ({{produccts.length}}):</div>
<div class="package-info-product" ng-repeat="product in produccts">
{{product.quantity}} x {{product.productName}}
</div>
</div>
</div>
</div>
<div id="set-default-prices" class="col-md-12" ng-if="isStepVisible('set-default-prices')">
<h4>{{'packages.headers.SET_DEFAULT_PRICES' | translate}}</h4>
<div id="comissions-default" class="comissions-row row">
<div class="customer-name col-md-12">{{'packages.headers.DEFAULT' | translate}}</div>
<div ng-repeat="priceObject in priceList[0]" class="pay-group col-md-12">
<div class="row pay-comission-row">
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.PAY_TYPE' | translate}}: {{priceObject.payType}}
</div>
<div class="comission-text">
{{'packages.headers.FIXED' | translate}}:
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.MINIMAL_SELL_PRICE' | translate}}
</div>
<div class="comission-text">
{{priceObject.minimalFixedPrice}}
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.MY_COMMISSION' | translate}}
</div>
<div class="comission-text">
+ <input ng-model="priceObject.defaultExtra"/>
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.DEFAULT_PRICE' | translate}}
</div>
<div class="comission-text">
= {{priceSum([priceObject.minimalFixedPrice, priceObject.defaultExtra])}}
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.VISIBLE_TO_CUSTOMER' | translate}}
</div>
<div class="comission-text">
<span ng-click="setVisible(priceObject)" class="visible-glyph glyphicon {{isVisibleToCustomer(priceObject)}}"></span>
</div>
</div>
</div>
<div class="row pay-comission-row">
<div class="pay-comission-col-small col-md-2">
{{'packages.headers.MONTHLY_RECURENCE' | translate}}:
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-text">
{{priceSum([priceObject.minimalRecurentPrice, priceObject.minimalServicesPrice])}}
<span ng-if="priceObject.minimalRecurentPrice > 0">
({{priceObject.minimalServicesPrice}} for services)
</span>
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="recurent-box comission-text">
<div ng-if="title[priceObject.idPayType]" class="recurent-tip alert alert-success">
<span class="glyphicon glyphicon-info-sign"></span> {{'packages.messages.EPR' | translate}}
<br/>
<span class="glyphicon glyphicon-info-sign"></span> {{'packages.messages.ESR' | translate}}
<br/>
<span class="glyphicon glyphicon-info-sign"></span> {{'packages.messages.MY_COMMISSION_FORMULA' | translate}}
</div>
<div class="recurent-input-layer" ng-if="priceObject.packagePayPeriod > 0">
+ <input ng-model="priceObject.defaultRecurent"/> (<span ng-mouseover="showTitle(priceObject.idPayType)" ng-mouseleave="hideTitle(priceObject.idPayType)" class="recurent-info glyphicon glyphicon-info-sign"></span> EPR)
</div>
<div>
+ <input ng-model="priceObject.defaultServicesRecurent"/> (<span ng-mouseover="showTitle(priceObject.idPayType)" ng-mouseleave="hideTitle(priceObject.idPayType)" class="recurent-info glyphicon glyphicon-info-sign"></span> ESR)
</div>
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-text">
= {{priceSum([priceObject.minimalRecurentPrice, priceObject.minimalServicesPrice, priceObject.defaultRecurent, priceObject.defaultServicesRecurent])}}
</div>
</div>
</div>
</div>
</div>
</div>
<div id="choose-customers" class="col-md-12" ng-if="isStepVisible('select-commissions')">
<h4>{{'packages.headers.ADD_CUSTOMERS' | translate}}</h4>
<div class="customer-select-layer">
<select id="customer-selection"
class="select-customer-for-pricing form-control-static"
ng-model="data.selectedCustomerKey"
ng-change="getCustomerPrices(data.selectedCustomerKey)"
required>
<option ng-repeat="(key, customerObject) in customers" value={{key}}>
{{customerObject.customer}}
</option>
</select>
</div>
</div>
<div id="select-commissions" class="col-md-12" ng-if="isStepVisible('select-commissions')">
<h4>{{'packages.headers.SET_COMMISSIONS' | translate}}: {{packageInfo.name}}</h4>
<div id="select-comission-warning" class="alert alert-warning" ng-if="!selectedCustomers.length">
{{'packages.messages.NO_CUMSTOMER_SELECTED' | translate}}
</div>
<div class="comissions-select-layer">
<div ng-repeat="customerObject in selectedCustomers"
idCustomer="{{customerObject.id}}"
id="comissions-{{customerObject.id}}"
class="row comissions-row">
<div class="customer-name col-md-12">
{{customerObject.customer}}
<span ng-if="isSameCompany(customerObject)">( same company )</span>
</div>
<div ng-repeat="priceObject in priceList[customerObject.id]" class="pay-group col-md-12">
<div class="row pay-comission-row">
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.PAY_TYPE' | translate}}: {{priceObject.payType}}
</div>
<div class="comission-text">
{{'packages.headers.FIXED' | translate}}:
</div>
</div>
<div class="pay-comission-col-small col-md-1">
<div class="comission-header">
{{'packages.headers.MINIMAL_SELL_PRICE' | translate}}
</div>
<div class="comission-text">
{{priceObject.minimalFixedPrice}}
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.MY_COMMISSION' | translate}}
</div>
<div class="comission-text">
+ <input ng-disabled="isSameCompany(customerObject)" ng-model="customerObject.prices[priceObject.idPayType].fixedCommission" />
</div>
</div>
<div class="pay-comission-col-small col-md-1">
<div class="comission-header">
{{'packages.headers.FINAL_PRICE' | translate}}
</div>
<div class="comission-text">
= {{priceSum([priceObject.minimalFixedPrice, customerObject.prices[priceObject.idPayType].fixedCommission])}}
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="comission-header">
{{'packages.headers.VISIBLE_TO_CUSTOMER' | translate}}
</div>
<div class="comission-text">
<span ng-click="setVisible(customerObject.prices[priceObject.idPayType])" class="visible-glyph glyphicon {{isVisibleToCustomer(customerObject.prices[priceObject.idPayType])}}"></span>
</div>
</div>
</div>
<div class="row pay-comission-row">
<div class="pay-comission-col-small col-md-2">
{{'packages.headers.MONTHLY_RECURENCE' | translate}}:
</div>
<div class="pay-comission-col-small col-md-1">
<div class="comission-text">
{{priceSum([priceObject.minimalRecurentPrice, priceObject.minimalServicesPrice])}}
<span ng-if="priceObject.minimalRecurentPrice > 0">
({{priceObject.minimalServicesPrice}} for services)
</span>
</div>
</div>
<div class="pay-comission-col-small col-md-2">
<div class="recurent-box comission-text">
<div ng-if="title[priceObject.idPayType +'-' + customerObject.id]" class="recurent-tip alert alert-success">
<span class="glyphicon glyphicon-info-sign"></span> MPR = My Package Recurent Comission
<br/>
<span class="glyphicon glyphicon-info-sign"></span> MSR = My Services and Support Recurent Comission
</div>
<div class="recurent-input-layer" ng-if="customerObject.prices[priceObject.idPayType].packagePayPeriod > 0">
+ <input ng-disabled="isSameCompany(customerObject)" ng-model="customerObject.prices[priceObject.idPayType].recurentCommission"/> (<span ng-mouseover="showTitle(priceObject.idPayType +'-' + customerObject.id)" ng-mouseleave="hideTitle(priceObject.idPayType +'-' + customerObject.id)" class="recurent-info glyphicon glyphicon-info-sign"></span> MPR)
</div>
<div>
+ <input ng-disabled="isSameCompany(customerObject)" ng-model="customerObject.prices[priceObject.idPayType].recurentServicesCommission"/> (<span ng-mouseover="showTitle(priceObject.idPayType +'-' + customerObject.id)" ng-mouseleave="hideTitle(priceObject.idPayType +'-' + customerObject.id)" class="recurent-info glyphicon glyphicon-info-sign"></span> MSR)
</div>
</div>
</div>
<div class="pay-comission-col-small col-md-1">
<div class="comission-text">
= {{priceSum([priceObject.minimalRecurentPrice, priceObject.minimalServicesPrice, customerObject.prices[priceObject.idPayType].recurentCommission, customerObject.prices[priceObject.idPayType].recurentServicesCommission])}}
</div>
</div>
</div>
</div>
<div class="btn btn-danger" ng-click="showHideRemoveDialog(customerObject.id)">
<span class="glyphicon glyphicon-remove"></span> Remove customer specific commisions
</div>
</div>
</div>
</div>
</div>
<div id="action-buttons">
<div class="next-btn btn btn-primary"
ng-click="goToNextStep('next')">
{{'packages.buttons.' + actionButton | translate}}
</div>
<div class="prev-btn btn btn-primary"
ng-click="goToNextStep('prev')"
ng-if="hasPrevStep()">
{{'packages.buttons.' + prevButton | translate}}
</div>
</div>
<div id="dialog-confirm-remove-customer-from-package-price"
dialog
ng-if="isRemoveDialogVisible"
on-confirmation="removeCustomerSpecificCommissions"
on-close="showHideRemoveDialog"
is-modal="true"
has-buttons="true"
parameters="idCustomer"
title="Remove customer">
<p><span class="glyphicon glyphicon-warning-sign"></span>Are you sure you want to remove customer {{customerToRemove.customer}}?</p>
</div>

View File

@@ -0,0 +1,8 @@
<div class="row">
<div class="col-sm-12"
id="select-package-layer"
ng-if="isSubmoduleVisible('selectPackage')">
<h3>{{ 'packages.headers.SELECT_PACKAGE' | translate }}</h3>
<select-package ng-init="startSelectPackageModule()" ng-controller="selectPackageCtrl"></select-package>
</div>
</div>

View File

@@ -0,0 +1,156 @@
<div id="package-info">
<h4>{{packageInfo.name}} ({{'packages.headers.SOLD_IN' | translate}} {{packageInfo.country}})</h4>
<div ng-bind-html="renderHtml(packageInfo.description)" class="package_description"></div>
<h4>{{'packages.headers.PRODUCTS' | translate}}:</h4>
<div class="products-list">
<div class="package-category" ng-repeat="(productType, produccts) in packageProducts">
<div class="product-category-title">{{productType}} ({{produccts.length}}):</div>
<div class="package-info-product" ng-repeat="product in produccts">
{{product.quantity}} x {{product.productName}} : {{calculateTotalPrice(product.unitCostPrice, product.payPeriod, product.isPriceRecurring, product.quantity)}} ({{calculateTotalPrice(product.unitCostPrice, product.payPeriod, product.isPriceRecurring)}} {{'packages.headers.UNIT' | translate}})
<span ng-if="isPriceRecurring(product.isPriceRecurring)" class="product-recurring-info">({{product.unitCostPrice}} / {{'packages.extra.MONTH_FOR' | translate}} {{product.payPeriod}} {{'packages.extra.MONTHS' | translate}})</span>
</div>
</div>
</div>
</div>
<div id="total-costs" class="row">
<h3 class="col-md-12">{{'packages.headers.TOTAL_COSTS' | translate}}</h3>
<div class="col-md-12">
<div class="price-col col-md-2" ng-if="totalPrices.product">
<div class="price-header">Products</div>
<div class="price-text">{{totalPrices.product}}</div>
</div>
<div class="price-col col-md-2" ng-if="totalPrices.service.fixedPrice">
<div class="price-header">One time services</div>
<div class="price-text">{{totalPrices.service.fixedPrice}}</div>
</div>
<div class="price-col col-md-2" ng-if="totalPrices.installation">
<div class="price-header">Installation</div>
<div class="price-text">{{totalPrices.installation}}</div>
</div>
<div class="price-col col-md-2" ng-if="totalPrices.service.recurringPrice">
<div class="price-header">Recurring services</div>
<div class="price-text">{{totalPrices.service.recurringPrice}} / month</div>
</div>
<div class="price-col col-md-2">
<div class="price-header">Interest Rate</div>
<div class="price-text">{{interestRate}} %</div>
</div>
<div class="total-col col-md-2">
<div class="price-header">{{'packages.headers.PAY_MARGIN' | translate}}</div>
<div class="price-text">
<input type="number" ng-model="commissionSplit.payMargin"/>
</div>
</div>
<div ng-if="maxMarginExceded(commissionSplit.payMargin, totalPrice)" class="col-md-4">
<div class="alert alert-danger">
<span class="glyphicon glyphicon-ban-circle"></span>
{{'packages.messages.PAY_MARGIN_EXCEDED' | translate}}
</div>
</div>
<div class="total-col col-md-12">
<div class="price-header">Total cost</div>
<div class="row">
<div class="col-md-1">Fixed cost:</div>
<div class="col-md-2">{{calculateTotalCost(totalPrices, 'fixed')}}</div>
</div>
<div class="row" ng-if="calculateTotalCost(totalPrices, 'recurring')">
<div class="col-md-1">Recurring cost:</div>
<div class="col-md-2">{{calculateTotalCost(totalPrices, 'recurring')}} / month</div>
</div>
</div>
</div>
</div>
<div id="comission-split" class="row">
<h3 class="col-md-12">{{'packages.headers.COMISSION_SPLIT' | translate}}</h3>
<div class="user-layer">
<div class="user-icon glyphicon glyphicon-user"></div>
<div class="user-type">
{{'packages.headers.BROKER' | translate}}
</div>
</div>
<div class="commission-range-layer">
<input ng-model="commissionSplit.broker" ng-change="updateCommission('broker')" type="number" class="small-input"/>
<span class="split-percent-sign">%</span>
<input ng-model="commissionSplit.broker" ng-change="updateCommission('broker')" type="range" min="0" max="100" class="range-input"/>
<input ng-model="commissionSplit.commercialLead" ng-change="updateCommission('commercialLead')" type="number" class="small-input"/>
<span class="split-percent-sign">%</span>
</div>
<div class="user-layer">
<div class="user-icon glyphicon glyphicon-user"></div>
<div class="user-type">
{{'packages.headers.COMMERCIAL_LEAD' | translate}}
</div>
</div>
</div>
<div id="packages-per-pay-type">
<h3>{{'packages.headers.PACKAGE_PER_PAY_TYPES' | translate}}</h3>
<div ng-repeat="(key, price) in selectedPrices" class="price-group row">
<div class="pay-type col-md-12">{{price.payType}}</div>
<div class="price-small-group col-md-12">
<div class="price-col col-md-2">
<div class="price-header">{{'packages.headers.MINIMAL_FIXED_SELL_PRICE' | translate}}</div>
<div class="price-text"><input ng-model="price.minimalFixedPrice"/></div>
</div>
<div class="price-col col-md-2">
<div class="price-header">{{'packages.headers.MINIMAL_RECURENT_SELL_PRICE' | translate}}</div>
<div class="price-text">{{(price.minimalRecurentPrice + price.minimalServicesPrice).toFixed(0)}}</div>
</div>
<div class="price-col col-md-3" ng-if="price.packagePayPeriod > 0">
<div class="price-header">Principal Amount</div>
<div class="price-text"><input type="number" ng-change="setRecurrentPrice(interestRate / 100, price)" ng-model="price.principalAmount"/></div>
<div class="price-header">{{'packages.headers.MINIMAL_RECURENT_PACKAGE_PRICE' | translate}} ({{boundMessage(price.packagePayPeriod, price.periodUnit, 'packagePayPeriod')}})</div>
<div class="price-text">{{calculateFinancing(interestRate / 100, price.packagePayPeriod, price.principalAmount).toFixed(0)}} / {{price.periodUnit}}</div>
</div>
<div class="price-col col-md-3">
<div class="price-header">{{'packages.headers.MINIMAL_RECURENT_SERVICES_PRICE' | translate}} ({{boundMessage(price.servicesContractPeriod, price.periodUnit, 'servicesContractPeriod')}})</div>
<div class="price-text"><input type="number" ng-model="price.minimalServicesPrice"/> / {{price.periodUnit}}</div>
<div class="price-total-recurent" ng-if="price.servicesContractPeriod > 0">
{{'packages.headers.FINAL_TOTAL' | translate}} {{(price.minimalServicesPrice * price.servicesContractPeriod).toFixed(2)}}
</div>
</div>
<div class="price-col col-md-2">
<div class="price-header">Max contract period</div>
<div class="price-text">{{price.maxContractPeriod}} {{price.periodUnit}}</div>
</div>
</div>
<div id="remove-pay-{{key}}" class="pay-type-btn btn btn-danger" ng-click="removePayType(key)">
<span class="glyphicon glyphicon-minus"></span>
<span class="btn-extra-text">
{{'packages.buttons.REMOVE' | translate}}
</span>
</div>
</div>
<div id="all-price-types" ng-if="payTypesVisible" class="price-group row">
<div ng-repeat="(key, price) in prices" class="price-col pay-type-selection">
<input type="checkbox" ng-checked="price.isChecked" ng-model="price.isChecked" class="price-checkbox"/>
<label>{{price.payType}}
({{'packages.headers.PAY_PERIOD' | translate}} {{price.packagePayPeriod}} {{price.periodUnit}} ,
{{'packages.headers.SERVICES_AND_SUPPORT' | translate}} {{price.servicesContractPeriod}} {{price.periodUnit}},
{{'packages.headers.MAX_PERIOD' | translate}} {{price.maxContractPeriod}} {{price.periodUnit}})
</label>
</div>
<div id="select-pay-types" class="pay-type-btn btn btn-success" ng-click="selectPayTypes()">
<span class="glyphicon glyphicon-ok"></span>
<span class="btn-extra-text">
{{'packages.buttons.SELECT' | translate}}
</span>
</div>
</div>
<div id="action-buttons" class="col-md-12">
<div id="add-pay-type" ng-if="!payTypesVisible" class="pay-type-btn btn btn-success" ng-click="addPayType()">
<span class="glyphicon glyphicon-plus"></span>
<span class="btn-extra-text">
{{'packages.buttons.ADD' | translate}}
</span>
</div>
<div class="save-btn btn btn-primary"
ng-if="!payTypesVisible"
ng-click="updateBrokerPricesAndCommission(key)">
{{'packages.buttons.SAVE' | translate}}
</div>
</div>
</div>

View File

@@ -0,0 +1,8 @@
<div class="row">
<div class="col-sm-12"
id="set-package-price-layer"
ng-if="isSubmoduleVisible('setPackagePrice')">
<h3>{{ 'packages.headers.SET_PACKAGE_PRICE' | translate }}</h3>
<set-package-price ng-init="startSetPackagesPrices()" ng-controller="setPackagePriceCtrl"></set-package-price>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<div id="upload-image-cdn-container" ng-init="parseUploadParams()">
<h3 class="upload-image-title">Upload an image</h3>
<div class="row image-characteristic">
<label class="col-md-4">Name of the image</label>
<input type="text" class="col-md-7" ng-model="options.name"/>
</div>
<div class="row image-characteristic">
<label class="col-md-4">Set a specific width (px)</label>
<input type="number" step="1" min="1" max="5000" ng-model="options.width"/>
</div>
<div class="row image-characteristic">
<label class="col-md-4">Set a specific height (px)</label>
<input type="number" step="1" min="1" max="5000" ng-model="options.height"/>
</div>
<div class="alert alert-info">
<span class="glyphicon glyphicon-info-sign"></span> If no value is provided for width and height, the image will not be altered. The original size will be saved
</div>
<div ngf-drop="uploadImage($file)"
ng-model="files"
ngf-drag-over-class="'dragover'"
ngf-select="uploadImage($file)"
ngf-pattern="'.jpg,.jpeg,.png'"
ngf-max-size="10MB"
class="drop-box col-md-6">Select or drop image here</div>
<div class="alert col-md-12" ng-if="imageUrl">
<div class="col-md-12 image-url-label">
Your image url:
</div>
{{imageUrl}}
<button class="btn btn-info" ngclipboard data-clipboard-text={{imageUrl}}>
<span class="glyphicon glyphicon-copy">Copy</span>
</button>
</div>
</div>

View File

@@ -0,0 +1,3 @@
<a href="packages?subModule=packageOptions">
<span class="glyphicon glyphicon-plus edit-icon"></span> {{'packages.buttons.LINK_OPTIONS' | translate}}
</a>

View File

@@ -0,0 +1,3 @@
<a href="packages?subModule=packageOptions">
<span class="glyphicon glyphicon-plus edit-icon"></span>
</a>

View File

@@ -0,0 +1,3 @@
<a href="packages?subModule=setPackagePrice&idPackage={{additionalPackage.idPackage}}">
<span class="glyphicon glyphicon-pencil edit-icon"></span>
</a>

View File

@@ -0,0 +1,3 @@
<a href="packages?subModule=setPackagePrice&idPackage={{option.idPackage}}">
<span class="glyphicon glyphicon-pencil edit-icon"></span>
</a>

View File

@@ -0,0 +1,3 @@
<a href="packages?subModule=setPackagePrice&idPackage={{data.id}}">
<span class="glyphicon glyphicon-pencil edit-icon"></span>
</a>