UNPKG

ttk-app-core

Version:
76 lines (68 loc) 2.65 kB
import {Map, List, fromJS} from 'immutable' import {reducer as MetaReducer} from 'edf-meta-engine' import config from './config' import moment from 'moment' import {getInitState} from './data' class reducer { constructor(option) { this.metaReducer = option.metaReducer } init = (state) => { return this.metaReducer.init(state, getInitState()) } load = (state, option) => { if (option.response) { if (Object.keys(option.response).length == 0) { option.response.isEnable = true state = this.metaReducer.sf(state, 'data.form', fromJS(option.response)) } else { state = this.metaReducer.sf(state, 'data.form', fromJS(option.response)) } } if (option.code) { state = this.metaReducer.sf(state, 'data.form.code', fromJS(option.code)) } if (option.glAccounts) { state = this.metaReducer.sf(state, 'data.other.glAccounts', fromJS(option.glAccounts)) } return state } glAccounts = (state, option) => { let data = this.metaReducer.gf(state, 'data').toJS() let status = { receivableAccountStatus: true, receivableInAdvanceAccountStatus: true, otherReceivableAccountStatus: true, } option.glAccounts.forEach(function(dataObj){ if(dataObj.id == data.form.receivableAccountId){ status.receivableAccountStatus = false } if(dataObj.id == data.form.receivableInAdvanceAccountId){ status.receivableInAdvanceAccountStatus = false } if(dataObj.id == data.form.receivableInAdvanceAccountId){ status.otherReceivableAccountStatus = false } }) if(status.receivableAccountStatus == true){ state = this.metaReducer.sf(state, 'data.form.receivableAccountId', '') } if(status.receivableInAdvanceAccountStatus == true){ state = this.metaReducer.sf(state, 'data.form.receivableInAdvanceAccountId', '') } if(status.otherReceivableAccountStatus == true){ state = this.metaReducer.sf(state, 'data.form.otherReceivableAccountId', '') } state = this.metaReducer.sf(state, `data.form.${option.str}`, option.addItem.id) return state = this.metaReducer.sf(state, 'data.other.glAccounts', fromJS(option.glAccounts)) } payableAccountChange = (state, option) => { return state = this.metaReducer.sf(state, 'data.form.receivableAccountId', option) } } export default function creator(option) { const metaReducer = new MetaReducer(option), o = new reducer({...option, metaReducer}) return {...metaReducer, ...o} }