Initial commit
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="create-packages-layer"
|
||||
ng-if="isSubmoduleVisible('createPackagesFromTemplate')">
|
||||
<create-packages-from-template></create-packages-from-template>
|
||||
</div>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="create-packages-layer"
|
||||
ng-if="isSubmoduleVisible('createPackages')">
|
||||
<create-packages></create-packages>
|
||||
</div>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="create-template-packages-layer"
|
||||
ng-if="isSubmoduleVisible('createTemplatePackages')">
|
||||
<create-packages-template></create-packages-template>
|
||||
</div>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="edit-packages-layer"
|
||||
ng-if="isSubmoduleVisible('editPackages')">
|
||||
<edit-packages ng-controller="editPackagesCtrl" ng-init="getCountries()"></edit-packages>
|
||||
</div>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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');
|
||||
}
|
||||
?>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,3 @@
|
||||
<a href="packages?subModule=packageOptions">
|
||||
<span class="glyphicon glyphicon-plus edit-icon"></span> {{'packages.buttons.LINK_OPTIONS' | translate}}
|
||||
</a>
|
||||
@@ -0,0 +1,3 @@
|
||||
<a href="packages?subModule=packageOptions">
|
||||
<span class="glyphicon glyphicon-plus edit-icon"></span>
|
||||
</a>
|
||||
@@ -0,0 +1,3 @@
|
||||
<a href="packages?subModule=setPackagePrice&idPackage={{additionalPackage.idPackage}}">
|
||||
<span class="glyphicon glyphicon-pencil edit-icon"></span>
|
||||
</a>
|
||||
@@ -0,0 +1,3 @@
|
||||
<a href="packages?subModule=setPackagePrice&idPackage={{option.idPackage}}">
|
||||
<span class="glyphicon glyphicon-pencil edit-icon"></span>
|
||||
</a>
|
||||
@@ -0,0 +1,3 @@
|
||||
<a href="packages?subModule=setPackagePrice&idPackage={{data.id}}">
|
||||
<span class="glyphicon glyphicon-pencil edit-icon"></span>
|
||||
</a>
|
||||
Reference in New Issue
Block a user