diff --git a/ui/src/pages/map.vue b/ui/src/pages/map.vue index 8419efb..a968ea9 100644 --- a/ui/src/pages/map.vue +++ b/ui/src/pages/map.vue @@ -107,6 +107,7 @@ const tmpl = reactive({ alanlar: [], kriterler: {}, + dagitim: {} }) onMounted(() => { @@ -226,12 +227,54 @@ const doProcess = function () { } } +const hesapKodBul = function (row, fieldName) { + // Hesap kodunu bulalım + let hesapKod = '' + Object.keys(tmpl.kriterler).forEach(k => { + const kriter = tmpl.kriterler[k] + + let kriterVal = '' + + if (kriter.colNro >= 0) { + // sabit kriter alanı + kriterVal = row[kriter.colNro] + } else { + const tmpValues = [] + tmpl.kriterler[k].combinedFieldsNro.forEach(cf => { + let tmpKriterVal = row[cf] + if ((tmpKriterVal === null) || (tmpKriterVal === undefined)) { + tmpKriterVal = '' + } + tmpValues.push(tmpKriterVal) + }) + + kriterVal = tmpValues.join(' ').trim() + } + + const map = kriter.mappings[kriterVal] + + if ((map !== undefined) && (map !== null)) { + const tmpHesapKod = map[fieldName] + if (tmpHesapKod) { + hesapKod = tmpHesapKod + } + } else { + console.log(kriter) + } + }) + + return hesapKod + +} + const processXLS = function () { const sheet = workbook.Sheets[ld.bordroSheet] const rawData = utils.sheet_to_json(sheet, { header: 1 }) const bordro = [] + const dagitimKeys = Object.keys(tmpl.dagitim) + rawData.forEach((row, ndx) => { if (ndx <= tmpl.baslikSatiri - 1 + tmpl.baslikSatirAdedi) { @@ -261,48 +304,38 @@ const processXLS = function () { // veri alanlarını verelim tmpl.alanlar.filter(a => {return a.colType === 'veri'}).forEach(veri => { - // Hesap kodunu bulalım - let hesapKod = '' - Object.keys(tmpl.kriterler).forEach(k => { - const kriter = tmpl.kriterler[k] - let kriterVal = '' + let dagitimYapildi = false + if (dagitimKeys.length > 0) { + dagitimKeys.forEach(bazAlan => { + const degerler = Object.keys(tmpl.dagitim[bazAlan].kural) + degerler.forEach(deger => { + if (deger === row[tmpl.dagitim[bazAlan].bazAlanColNro]) { + dagitimYapildi = true + tmpl.dagitim[bazAlan].kural[deger].forEach(oran => { + //row'ın bir kopyasını oluşturalım çünkü hesap kodunu bu yeni row'a göre bulacağız + const tmpRow = [...row] + tmpRow[tmpl.dagitim[bazAlan].hedefAlanColNro] = oran.deger + bordroRow['Hesap'] = hesapKodBul(tmpRow, veri.fieldName) + bordroRow['Masraf Açıklama'] = veri.fieldName + bordroRow['Tutar'] = row[veri.colNro] * (oran.oran / 100) + bordroRow['B/A'] = veri.ba - if (kriter.colNro >= 0) { - // sabit kriter alanı - kriterVal = row[kriter.colNro] - } else { - const tmpValues = [] - tmpl.kriterler[k].combinedFieldsNro.forEach(cf => { - let tmpKriterVal = row[cf] - if ((tmpKriterVal === null) || (tmpKriterVal === undefined)) { - tmpKriterVal = '' + bordro.push({ ...bordroRow }) + }) } - tmpValues.push(tmpKriterVal) }) + }) + } - kriterVal = tmpValues.join(' ').trim() - } + if (!dagitimYapildi) { + bordroRow['Hesap'] = hesapKodBul(row, veri.fieldName) + bordroRow['Masraf Açıklama'] = veri.fieldName + bordroRow['Tutar'] = row[veri.colNro] + bordroRow['B/A'] = veri.ba - const map = kriter.mappings[kriterVal] - - if ((map !== undefined) && (map !== null)) { - const tmpHesapKod = map[veri.fieldName] - if (tmpHesapKod) { - hesapKod = tmpHesapKod - } - } else { - console.log(kriter) - } - - }) - - bordroRow['Hesap'] = hesapKod - bordroRow['Masraf Açıklama'] = veri.fieldName - bordroRow['Tutar'] = row[veri.colNro] - bordroRow['B/A'] = veri.ba - - bordro.push({ ...bordroRow }) + bordro.push({ ...bordroRow }) + } }) } } diff --git a/ui/src/pages/tmpl.vue b/ui/src/pages/tmpl.vue index 265d84a..f2b263f 100644 --- a/ui/src/pages/tmpl.vue +++ b/ui/src/pages/tmpl.vue @@ -185,6 +185,73 @@ + + + + + Dağıtım Tanımları + + + + + + + + + + + Dağıtım Alanı + Dağıtım Kuralı + + + + + + + + + + + {{kk}} : {{khk}} + + + {{kv.hedefAlan}} + + + %{{oran.oran}} --> {{oran.deger}} + + + + + + + + + + + + @@ -273,12 +340,111 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +