gld_period_rule.lview 10 KB
<?xml version="1.0" encoding="UTF-8"?>
<!--
    $Author: ouyangzhaochang2663 $
    $Date: 2010/11/18 08:42:31 $
    $Revision: 1.1 $
    $Purpose: 会计期定义 - 创建规则
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" trace="true">
    <a:init-procedure/>
    <a:view>
        <a:link id="gld_period_create_link" url="${/request/@context_path}/modules/gld/FND2120/gld_period_create.lview"/>
        <script type="text/javascript"><![CDATA[
            function monthValidator(record, name, value) {
                if (name == 'month_from' || name == 'month_to') {
                    if (value < 1 || value > 12) {
                        return '${l:INCORRECT_MONTH_ENTERED}';
                    }
                }
                return true;
            }
            
            function dateValidator(record, name, value) {
                var array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                if (name == 'date_from' || name == 'date_to') {
                    var month = 1;
                    if (name == 'date_from') {
                        month = record.get('month_from');
                    } else {
                        month = record.get('month_to');
                    }
                    if (value < 1 || value > array[month - 1]) {
                        return '${l:DATE_ENTERED_INCORRECTLY}';
                    }
                }
                return true;
            }
            
            function onUpdate_ruleDs(ds, record, name, value) {
                if (name == 'month_from' || name == 'month_to') {
                    record.validate((name == 'month_from') ? 'date_from' : 'date_to');
                }
            }
            
            function periodSetCodeEdit(record, name) {
                if (record.isNew) {
                    return 'period_set_code_grid_tf';
                } else {
                    return '';
                }
            }
            
            function quarterNumValidator(record, name, value) {
                if (value > 4 || value < 1) {
                    return '${l:QUARTERLY_INPUT_ERROR}';
                }
                return true;
            }
            
            function validateRules() {
                $('ruleDs').validate();
                var totalPeriodNum = $('periodSetInfoDs').getCurrentRecord().get('total_period_num');
                var records = $('ruleDs').getAll();
                if (records == '' || records == null || records.length != totalPeriodNum) {
                    Leaf.showMessage('${l:PROMPT}', '${l:DURING_THE_RULE_DEFINITION_IS_NOT_COMPLETE}');
                    return false;
                } else {
                    for (var i = 1;i < records.length;i++) {
                        var currentRecord = records[i];
                        if (currentRecord.get('adjustment_flag') == 'Y') {
                            break;
                        }
                        var currentDateFrom = new Date(2000, currentRecord.get('month_from') - 1, currentRecord.get('date_from'));
                        var currentDateTo = new Date(2000, currentRecord.get('month_to') - 1, currentRecord.get('date_to'));
                        for (var j = 0;j < i;j++) {
                            var compareRecord = records[j];
                            if (compareRecord.get('adjustment_flag') == 'Y') {
                                break;
                            }
                            var compareDateFrom = new Date(2000, compareRecord.get('month_from') - 1, compareRecord.get('date_from'));
                            var compareDateTo = new Date(2000, compareRecord.get('month_to') - 1, compareRecord.get('date_to'));
                            if (currentDateFrom > compareDateFrom && currentDateFrom < compareDateTo || currentDateTo > compareDateFrom && currentDateTo < compareDateTo) {
                                Leaf.showMessage('${l:PROMPT}', '${l:GLD_PERIOD_RULE_RO.TIME}' + parseInt(i + 1) + '${l:LINE}' + '${l:DURING_THE_RULE_DEFINITION_IS_NOT_COMPLETE}');
                                return false;
                            }
                        }
                        currentRecord.set('period_num', i + 1);
                    }
                    records[0].set('period_num', 1);
                    return true;
                }
            }
            
            function ruleDs_grid_save() {
                var records = $('ruleDs').getAll();
                for (var i = 0;i < records.length;i++) {
                    records[i].set('period_num', i + 1);
                }
                if ($('ruleDs').validate()) {
                    if (validateRules()) {
                        $('ruleDs').submit();
                    }
                }
            }
            
            function winOpen_create_period() {
                var records = $('ruleDs').getNewRecords();
                if ($('ruleDs').isModified()) {
                    Leaf.showMessage('${l:PROMPT}', '${l:BGT_SOLUTION.SAVE_FIRST}');
                    return;
                }
                if (validateRules()) {
                    new Leaf.Window({
                        id: 'gld_period_create_window',
                        url: $('gld_period_create_link').getUrl(),
                        params:{
                            period_set_code : '${/parameter/@period_set_code}'
                        },
                        title: '${l:DEFINITION_OF_ACCOUNTING_PERIOD_CREATE_PERIOD}',
                        height: 250,
                        width: 340
                    });
                }
            }
            
            function ruleDs_grid_add() {
                $('ruleDs_grid').showEditorByRecord($('ruleDs').create());
            }
            
            function ruleDs_grid_clear() {
                $('ruleDs_grid').clear();
            }
            
            function ruleDs_grid_submit() {
                var ds = $('ruleDs');
                if (ds.validate())
                {
                    ds.submit();
                }
            }
        ]]></script>
        <a:dataSets>
            <a:dataSet id="periodSetInfoDs" fetchAll="false" loadData="true" model="gld.gld_period_sets" selectable="true">
                <a:fields>
                    <a:field name="period_set_code" readOnly="true"/>
                    <a:field name="period_set_name" readOnly="true"/>
                    <a:field name="total_period_num" readOnly="true"/>
                    <a:field name="period_additional_flag_desc" displayField="code_value_name" options="periodAdditionalFlagDs" readOnly="true" returnField="period_additional_flag" valueField="code_value"/>
                </a:fields>
            </a:dataSet>
            <a:dataSet id="ruleDs" autoQuery="true" fetchAll="false" model="gld.FND2120.gld_period_rules" queryUrl="${/request/@context_path}/autocrud/gld.FND2120.gld_period_rules/query?ORDER_FIELD=period_num&amp;period_set_code=${/parameter/@period_set_code}" selectable="true" submitUrl="${/request/@context_path}/modules/gld/FND2120/gld_period_rules.lsc">
                <a:fields>
                    <a:field name="period_set_code" defaultValue="${/parameter/@period_set_code}"/>
                    <a:field name="period_additional_name" required="true"/>
                    <a:field name="month_from" required="true" validator="monthValidator"/>
                    <a:field name="month_to" required="true" validator="monthValidator"/>
                    <a:field name="date_from" required="true" validator="dateValidator"/>
                    <a:field name="date_to" required="true" validator="dateValidator"/>
                    <a:field name="quarter_num" required="true" validator="quarterNumValidator"/>
                    <a:field name="adjustment_flag" checkedValue="Y" defaultValue="N" uncheckedValue="N"/>
                </a:fields>
                <a:events>
                    <a:event name="update" handler="onUpdate_ruleDs"/>
                </a:events>
            </a:dataSet>
        </a:dataSets>
        <a:screenBody>
            <a:screenTopToolbar>
                <a:gridButton click="ruleDs_grid_add" text="HLS.NEW"/>
                <a:gridButton click="ruleDs_grid_clear" text="HLS.CLEAR"/>
                <a:gridButton click="ruleDs_grid_save" text="HLS.SAVE"/>
                <a:gridButton click="winOpen_create_period" text="GLD_PERIOD_RULE_CREATE_PERIOD"/>
            </a:screenTopToolbar>
            <a:form column="2" title="GLD_PERIOD_SET.PERIOD_SET_QUERY" width="500">
                <a:textField name="period_set_code" bindTarget="periodSetInfoDs"/>
                <a:textField name="period_set_name" bindTarget="periodSetInfoDs"/>
                <a:textField name="total_period_num" bindTarget="periodSetInfoDs"/>
                <a:comboBox name="period_additional_flag_desc" bindTarget="periodSetInfoDs"/>
            </a:form>
            <a:grid id="ruleDs_grid" bindTarget="ruleDs" height="375" navBar="true" width="680">
                <a:columns>
                    <a:column name="period_additional_name" align="center" editor="ruleDs_grid_tf" width="100"/>
                    <a:column name="month_from" align="center" editor="ruleDs_grid_nf_integer" width="85"/>
                    <a:column name="date_from" align="center" editor="ruleDs_grid_nf_integer" width="85"/>
                    <a:column name="month_to" align="center" editor="ruleDs_grid_nf_integer" width="85"/>
                    <a:column name="date_to" align="center" editor="ruleDs_grid_nf_integer" width="85"/>
                    <a:column name="quarter_num" align="center" editor="ruleDs_grid_nf_integer" width="85"/>
                    <a:column name="adjustment_flag" editor="ruleDs_grid_comb"/>
                </a:columns>
                <a:editors>
                    <a:textField id="ruleDs_grid_tf"/>
                    <a:numberField id="ruleDs_grid_nf_integer" allowDecimals="false" allowNegative="false"/>
                    <a:checkBox id="ruleDs_grid_comb"/>
                </a:editors>
            </a:grid>
        </a:screenBody>
    </a:view>
</a:screen>