feature: po pay downpayment

This commit is contained in:
2026-07-20 13:14:28 +07:00
parent dd5f0b6ab4
commit d92fb57751
64 changed files with 6166 additions and 1739 deletions

View File

@@ -0,0 +1,248 @@
<template>
<v-dialog v-model="dialog_add_mapping_default" persistent width="40vw">
<v-card>
<v-card-title class="headline grey lighten-2">Add Form</v-card-title>
<v-card-text>
<v-layout row wrap>
<v-flex xs12 pa-1>
<v-autocomplete :items="list_gol_inventaris.records" hide-details outline
label="Golongan Inventaris" item-text="M_InventarisGolName" item-value="M_InventarisGolID"
v-model="form.golID"></v-autocomplete>
</v-flex>
<v-flex xs12 pa-1>
<v-autocomplete :items="invCoa" hide-details outline label="Account Inventaris"
v-model="form.invCoaID" item-text="coaDescription" item-value="coaID"
:search-input.sync="searchInv" no-filter clearable>
<template slot="item" slot-scope="data">
<v-list-tile-content>
<v-list-tile-title v-html="data.item.coaAccountNo"></v-list-tile-title>
<v-list-tile-sub-title v-html="data.item.coaDescription"></v-list-tile-sub-title>
</v-list-tile-content>
</template>
</v-autocomplete>
</v-flex>
<v-flex xs12 pa-1>
<v-autocomplete :items="debtCoa" hide-details outline label="Account Hutang Inventaris"
v-model="form.debtCoaID" item-text="coaDescription" item-value="coaID"
:search-input.sync="searchDebt" no-filter clearable>
<template slot="item" slot-scope="data">
<v-list-tile-content>
<v-list-tile-title v-html="data.item.coaAccountNo"></v-list-tile-title>
<v-list-tile-sub-title v-html="data.item.coaDescription"></v-list-tile-sub-title>
</v-list-tile-content>
</template>
</v-autocomplete>
</v-flex>
<v-flex xs12 pa-1>
<v-autocomplete :items="bebanCoa" hide-details outline item-value="coaID"
label="Account Beban Penyusutan Inventaris" item-text="coaDescription"
v-model="form.bebanCoaID" :search-input.sync="searchBeban" no-filter clearable>
<template slot="item" slot-scope="data">
<v-list-tile-content>
<v-list-tile-title v-html="data.item.coaAccountNo"></v-list-tile-title>
<v-list-tile-sub-title v-html="data.item.coaDescription"></v-list-tile-sub-title>
</v-list-tile-content>
</template>
</v-autocomplete>
</v-flex>
<v-flex xs12 pa-1>
<v-autocomplete :items="accumCoa" hide-details outline item-value="coaID"
label="Account Akumulasi Penyusutan Inventaris" item-text="coaDescription"
v-model="form.accumCoaID" :search-input.sync="searchAccum" no-filter clearable>
<template slot="item" slot-scope="data">
<v-list-tile-content>
<v-list-tile-title v-html="data.item.coaAccountNo"></v-list-tile-title>
<v-list-tile-sub-title v-html="data.item.coaDescription"></v-list-tile-sub-title>
</v-list-tile-content>
</template>
</v-autocomplete>
</v-flex>
<v-flex xs12 pa-1>
<v-autocomplete :items="labaCoa" hide-details outline item-value="coaID"
label="Account Laba Pelepasan Inventaris" item-text="coaDescription"
v-model="form.labaCoaID" :search-input.sync="searchLaba" no-filter clearable>
<template slot="item" slot-scope="data">
<v-list-tile-content>
<v-list-tile-title v-html="data.item.coaAccountNo"></v-list-tile-title>
<v-list-tile-sub-title v-html="data.item.coaDescription"></v-list-tile-sub-title>
</v-list-tile-content>
</template>
</v-autocomplete>
</v-flex>
<v-flex xs12 pa-1>
<v-autocomplete :items="rugiCoa" hide-details outline item-value="coaID"
label="Account Rugi Pelepasan Inventaris" item-text="coaDescription"
v-model="form.rugiCoaID" :search-input.sync="searchRugi" no-filter clearable>
<template slot="item" slot-scope="data">
<v-list-tile-content>
<v-list-tile-title v-html="data.item.coaAccountNo"></v-list-tile-title>
<v-list-tile-sub-title v-html="data.item.coaDescription"></v-list-tile-sub-title>
</v-list-tile-content>
</template>
</v-autocomplete>
</v-flex>
</v-layout>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn @click="batalForm()" color="error" class="white--text">Batal</v-btn>
<v-btn @click="simpanForm()" color="primary" class="white--text">Simpan</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
module.exports = {
data() {
return {
searchInv: null,
searchDebt: null,
searchBeban: null,
searchAccum: null,
searchLaba: null,
searchRugi: null,
debounceTimeout: null
}
},
computed: {
dialog_add_mapping_default: {
get() {
return this.$store.state.invMap.dialog_add_mapping_default;
},
set(val) {
this.$store.commit("invMap/update_dialog_add_mapping_default", val);
}
},
form: {
get() {
return this.$store.state.invMap.form_gol;
},
set(val) {
this.$store.commit("invMap/update_form_gol", val);
}
},
list_gol_inventaris: {
get() {
return this.$store.state.invMap.list_gol_inventaris;
},
set(val) {
this.$store.commit("invMap/update_list_gol_inventaris", val);
}
},
loading_process() {
return this.$store.state.datacoa.loading_process;
},
invCoa() {
return this.$store.state.datacoa.invCoa;
},
debtCoa() {
return this.$store.state.datacoa.debtCoa;
},
bebanCoa() {
return this.$store.state.datacoa.bebanCoa;
},
accumCoa() {
return this.$store.state.datacoa.accumCoa;
},
labaCoa() {
return this.$store.state.datacoa.labaCoa;
},
rugiCoa() {
return this.$store.state.datacoa.rugiCoa;
},
},
methods: {
fetchCoa(keyword, key) {
this.$store.dispatch("datacoa/getListCoa", { keyword: keyword, key: key });
},
batalForm() {
this.form = {
golID: 0,
invCoaID: 0,
debtCoaID: 0,
bebanCoaID: 0,
accumCoaID: 0,
labaCoaID: 0,
rugiCoaID: 0
}
this.dialog_add_mapping_default = false;
},
simpanForm() {
if (!this.loading_process) {
const form = this.form;
const param = {
M_InventarisGolID: form.golID,
CoaInventarisID: form.invCoaID,
CoaHutangID: form.debtCoaID,
CoaPembelianID: form.invCoaID,
CoaBebanPenyusutanID: form.bebanCoaID,
CoaAkumulasiPenyusutanID: form.accumCoaID,
CoaLabaPelepasanID: form.labaCoaID,
CoaRugiPelepasanID: form.rugiCoa
}
if (form.M_InventarisCoaMappingID) {
param.M_InventarisCoaMappingID = form.M_InventarisCoaMappingID;
this.$store.dispatch("invMap/editInventarisGolMapping", param);
} else {
this.$store.dispatch("invMap/createInventarisGolMapping", param);
}
} else {
const snac = { state: true, msg: "terdapat ongoing proses", color: "warning" };
this.$store.commit('update_snackbar', snac);
}
}
},
watch: {
searchInv(val) {
if (!val) return;
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => {
this.fetchCoa(val, 'invCoa');
}, 500)
},
searchDebt(val) {
if (!val) return;
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => {
this.fetchCoa(val, 'debtCoa');
}, 500)
},
searchBeban(val) {
if (!val) return;
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => {
this.fetchCoa(val, 'bebanCoa');
}, 500)
},
searchAccum(val) {
if (!val) return;
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => {
this.fetchCoa(val, 'accumCoa');
}, 500)
},
searchLaba(val) {
if (!val) return;
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => {
this.fetchCoa(val, 'labaCoa');
}, 500)
},
searchRugi(val) {
if (!val) return;
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(() => {
this.fetchCoa(val, 'rugiCoa');
}, 500)
}
}
}
</script>