Skip to content
Code-Schnipsel Gruppen Projekte
DiscountEdit.js 9,67 KiB
Newer Older
  • Learn to ignore specific revisions
  • Henning Leutz's avatar
    Henning Leutz committed
    /**
     * Discount edit control
     *
     * @author www.pcsg.de (Henning Leutz)
     *
     * @event onLoaded
     */
    define('package/quiqqer/discount/bin/controls/DiscountEdit', [
    
        'qui/QUI',
        'qui/controls/Control',
        'qui/controls/buttons/Button',
        'qui/utils/Form',
        'Locale',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Mustache',
    
        'package/quiqqer/discount/bin/Discounts',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'package/quiqqer/translator/bin/controls/Update',
    
    Henning Leutz's avatar
    Henning Leutz committed
    
        'text!package/quiqqer/discount/bin/controls/DiscountEdit.html',
        'css!package/quiqqer/discount/bin/controls/DiscountEdit.css'
    
    ], function (QUI, QUIControl, QUIButton, QUIFormUtils, QUILocale,
    
                 Mustache, Discounts, Translation, template) {
    
    Henning Leutz's avatar
    Henning Leutz committed
        "use strict";
    
        var lg = 'quiqqer/discount';
    
        return new Class({
    
            Extends: QUIControl,
            Type   : 'package/quiqqer/discount/bin/controls/DiscountEdit',
    
            Binds: [
                '$onInject'
            ],
    
            options: {
                discountId: false
            },
    
            initialize: function (options) {
                this.parent(options);
    
                this.addEvents({
                    onInject: this.$onInject
                });
            },
    
            /**
             * Return the DOMNode Element
             *
             * @returns {HTMLDivElement}
             */
            create: function () {
                this.$Elm = this.parent();
                this.$Elm.set('class', 'discount-edit');
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.$Elm.set('html', Mustache.render(template, {
    
                    header                      : QUILocale.get(lg, 'control.edit.template.title'),
                    id                          : QUILocale.get(lg, 'control.edit.template.id'),
                    title                       : QUILocale.get(lg, 'control.edit.template.title'),
                    discount                    : QUILocale.get(lg, 'control.edit.template.discount'),
                    usageHeader                 : QUILocale.get(lg, 'control.edit.template.usage'),
    
                    usageVat                    : QUILocale.get(lg, 'control.edit.template.vat'),
                    usageVatDesc                : QUILocale.get(lg, 'control.edit.template.vatDesc'),
    
                    usageFrom                   : QUILocale.get(lg, 'control.edit.template.usage.from'),
                    usageTo                     : QUILocale.get(lg, 'control.edit.template.usage.to'),
                    usageAmountOf               : QUILocale.get(lg, 'control.edit.template.shopping.amount.of'),
                    usageAmountTo               : QUILocale.get(lg, 'control.edit.template.shopping.amount.to'),
                    usageValueOf                : QUILocale.get(lg, 'control.edit.template.purchase.value.of'),
                    usageValueTo                : QUILocale.get(lg, 'control.edit.template.purchase.value.to'),
                    usageAssignment             : QUILocale.get(lg, 'control.edit.template.assignment'),
                    usageAssignmentAreas        : QUILocale.get(lg, 'control.edit.template.areas'),
                    usageLastSumDiscount        : QUILocale.get(lg, 'control.edit.template.usageLastSumDiscount'),
                    usageLastSumDiscountDesc    : QUILocale.get(lg, 'control.edit.template.usageLastSumDiscountDesc'),
                    usageLastProductDiscount    : QUILocale.get(lg, 'control.edit.template.usageLastProductDiscount'),
                    usageLastProductDiscountDesc: QUILocale.get(lg, 'control.edit.template.usageLastProductDiscountDesc'),
    
    
                    usageScope      : QUILocale.get(lg, 'control.edit.template.usageScope'),
                    usageScopeEvery : QUILocale.get(lg, 'control.edit.template.usageScopeEvery'),
                    usageScopeTotal : QUILocale.get(lg, 'control.edit.template.usageScopeTotal'),
                    usageScopeUnique: QUILocale.get(lg, 'control.edit.template.usageScopeUnique'),
    
                    calculationBasis          : QUILocale.get(lg, 'control.edit.template.calculationBasis'),
                    calculationBasisNetto     : QUILocale.get(lg, 'control.edit.template.calculationBasis.netto'),
                    calculationBasisCalcPrice : QUILocale.get(lg, 'control.edit.template.calculationBasis.calculationBasisCalcPrice'),
                    calculationBasisCalcBrutto: QUILocale.get(lg, 'control.edit.template.calculationBasis.calculationBasisCalcBrutto'),
                    calculationPriority       : QUILocale.get(lg, 'control.edit.template.calculationPriority'),
    
                    considerVat      : QUILocale.get(lg, 'control.edit.template.considerVat'),
                    considerVatAuto  : QUILocale.get(lg, 'control.edit.template.considerVat.auto'),
                    considerVatNetto : QUILocale.get(lg, 'control.edit.template.considerVat.netto'),
                    considerVatBrutto: QUILocale.get(lg, 'control.edit.template.considerVat.brutto'),
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                    usageAssignmentProduct : QUILocale.get(lg, 'control.edit.template.assignment.product'),
                    usageAssignmentCategory: QUILocale.get(lg, 'control.edit.template.assignment.category'),
                    usageAssignmentUser    : QUILocale.get(lg, 'control.edit.template.assignment.user'),
    
                    usageAssignmentCombine : QUILocale.get(lg, 'control.edit.template.assignment.combine'),
    
                    usageType           : QUILocale.get(lg, 'discount.usage_type'),
                    usageTypeDescription: QUILocale.get(lg, 'discount.usage_type.description'),
                    usageTypeManuel     : QUILocale.get(lg, 'discount.usage_type.manuel'),
                    usageTypeAutomatic  : QUILocale.get(lg, 'discount.usage_type.automatic')
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.$Translate = null;
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.$Elm.setStyles({
                    overflow: 'hidden',
                    opacity : 0
                });
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                return this.$Elm;
            },
    
            /**
             * event : on inject
             */
            $onInject: function () {
                var self = this;
    
    
                require(['utils/Controls'], function (Utils) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    var Elm  = self.getElm(),
                        Form = Elm.getElement('form');
    
                    Discounts.getChild(
                        self.getAttribute('discountId')
                    ).then(function (data) {
    
                        data.usage_type    = parseInt(data.usage_type);
    
                        data.discount_type = parseInt(data.discount_type);
                        data.priority      = parseInt(data.priority);
    
                        switch (data.discount_type) {
                            case Discounts.DISCOUNT_TYPE_PERCENT:
                            case Discounts.DISCOUNT_TYPE_CURRENCY:
                                break;
    
                            default:
                                data.discount_type = Discounts.DISCOUNT_TYPE_PERCENT;
                        }
    
    
                        switch (data.usage_type) {
                            case Discounts.DISCOUNT_USAGE_TYPE_MANUEL:
                            case Discounts.DISCOUNT_USAGE_TYPE_AUTOMATIC:
                                break;
    
                            default:
                                data.usage_type = Discounts.DISCOUNT_USAGE_TYPE_MANUEL;
                        }
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                        QUIFormUtils.setDataToForm(data, Form);
    
    Henning Leutz's avatar
    Henning Leutz committed
                        self.$Translate = new Translation({
    
                            'group'  : lg,
                            'var'    : 'discount.' + data.id + '.title',
                            'package': 'quiqqer/discount'
    
    Henning Leutz's avatar
    Henning Leutz committed
                        }).inject(
                            Elm.getElement('.discount-title')
                        );
    
                        Elm.getElement('.field-id').set(
                            'html',
                            '#' + self.getAttribute('discountId')
                        );
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }).then(function () {
                        return QUI.parse(self.$Elm);
    
                    }).then(function () {
                        return Utils.parse(self.$Elm);
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }).then(function () {
    
                        self.$Elm.setStyles({
                            overflow: null
                        });
    
    
                        var Vat    = self.$Elm.getElement('[name="vat"]'),
                            VatRow = Vat.getParent('tr'),
                            Scope  = self.$Elm.getElement('[name="scope"]');
    
                        var hideVatRow = function () {
                            VatRow.setStyle('display', 'none');
                        };
    
                        var showVatRow = function () {
                            VatRow.setStyle('display', null);
                        };
    
                        Scope.addEvent('change', function (event) {
                            var value = event.target.value;
    
                            if (parseInt(value) == Discounts.DISCOUNT_SCOPE_TOTAL) {
                                showVatRow();
                                return;
                            }
    
                            hideVatRow();
                        });
    
                        if (parseInt(Scope.value) !== Discounts.DISCOUNT_SCOPE_TOTAL) {
                            hideVatRow();
                        }
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                        moofx(self.$Elm).animate({
                            opacity: 1
                        }, {
                            callback: function () {
                                self.fireEvent('loaded');
                            }
                        });
    
    Henning Leutz's avatar
    Henning Leutz committed
                    });
                });
            },
    
            /**
             * Save the Discount
             *
             * @return {Promise}
             */
            save: function () {
                var self = this;
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                return new Promise(function (resolve, reject) {
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                    var Elm  = self.getElm(),
                        Form = Elm.getElement('form');
    
                    var data = QUIFormUtils.getFormData(Form);
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.$Translate.save().then(function () {
                        return Discounts.update(
                            self.getAttribute('discountId'),
                            data
                        );
                    }).then(function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                        resolve();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }).catch(reject);
    
    Henning Leutz's avatar
    Henning Leutz committed