From ba320134f8eb688beab97b5eec112542635470f9 Mon Sep 17 00:00:00 2001 From: Hanan Askarim Date: Tue, 21 Jul 2026 09:21:31 +0700 Subject: [PATCH] add button report po asset --- .../components/dialog-add-item-aset.vue | 244 +++++++ .../components/dialog-create-contract.vue | 259 ++++++++ .../components/dialog-form-order-aset.vue | 601 ++++++++++++++++++ .../components/main-layout.vue | 33 +- test/vuex/acc-one-po-asset/modules/poasset.js | 179 ++++++ 5 files changed, 1315 insertions(+), 1 deletion(-) create mode 100644 test/vuex/acc-one-po-asset/components/dialog-add-item-aset.vue create mode 100644 test/vuex/acc-one-po-asset/components/dialog-create-contract.vue create mode 100644 test/vuex/acc-one-po-asset/components/dialog-form-order-aset.vue create mode 100644 test/vuex/acc-one-po-asset/modules/poasset.js diff --git a/test/vuex/acc-one-po-asset/components/dialog-add-item-aset.vue b/test/vuex/acc-one-po-asset/components/dialog-add-item-aset.vue new file mode 100644 index 0000000..341e3a5 --- /dev/null +++ b/test/vuex/acc-one-po-asset/components/dialog-add-item-aset.vue @@ -0,0 +1,244 @@ + + + \ No newline at end of file diff --git a/test/vuex/acc-one-po-asset/components/dialog-create-contract.vue b/test/vuex/acc-one-po-asset/components/dialog-create-contract.vue new file mode 100644 index 0000000..00eedcb --- /dev/null +++ b/test/vuex/acc-one-po-asset/components/dialog-create-contract.vue @@ -0,0 +1,259 @@ + + + diff --git a/test/vuex/acc-one-po-asset/components/dialog-form-order-aset.vue b/test/vuex/acc-one-po-asset/components/dialog-form-order-aset.vue new file mode 100644 index 0000000..826493a --- /dev/null +++ b/test/vuex/acc-one-po-asset/components/dialog-form-order-aset.vue @@ -0,0 +1,601 @@ + + + \ No newline at end of file diff --git a/test/vuex/acc-one-po-asset/components/main-layout.vue b/test/vuex/acc-one-po-asset/components/main-layout.vue index b05472f..8cc2677 100644 --- a/test/vuex/acc-one-po-asset/components/main-layout.vue +++ b/test/vuex/acc-one-po-asset/components/main-layout.vue @@ -56,7 +56,7 @@ Rp. {{ formatCurrency(props.item.PurchaseOrderGrandTotal) }} {{ props.item.PurchaseOrderStatus }} - +
Detail PO + + + Cetak PDF +
@@ -133,6 +142,14 @@ + @@ -145,6 +162,10 @@ module.exports = { }, data() { return { + urlprint: "", + printtitle: "", + printwidth: "60%", + openprint: false, menuStartdateFilter: false, menuEnddateFilter: false, headers: [ @@ -187,6 +208,7 @@ module.exports = { 'dialog-add-attchment': httpVueLoader('./dialog-add-attachment.vue'), 'dialog-delete-order': httpVueLoader('./dialog-delete-order.vue'), 'dialog-create-order': httpVueLoader('./dialog-create-order.vue'), + 'one-dialog-print': httpVueLoader('../../common/oneDialogPrintX.vue'), }, computed: { snackbar: { @@ -289,6 +311,15 @@ module.exports = { viewDetailPO(item) { this.$store.commit("common/update_viewonlymode", true); this.$store.dispatch("kontrakAsset/getDetailDataPO", item.PurchaseOrderID); + }, + printout(val) { + this.printwidth = "60%"; + this.printtitle = ""; + let user = one_user(); + let username = user && user.M_StaffName ? user.M_StaffName : ""; + let tm = Date.now(); + this.urlprint = BASE_URL + "/one-api/report/rpt_purchase_order_asset/pdf?id=" + val.PurchaseOrderID + "&username=" + username + "&tm=" + tm; + this.openprint = true; } }, watch: { diff --git a/test/vuex/acc-one-po-asset/modules/poasset.js b/test/vuex/acc-one-po-asset/modules/poasset.js new file mode 100644 index 0000000..c04f9cf --- /dev/null +++ b/test/vuex/acc-one-po-asset/modules/poasset.js @@ -0,0 +1,179 @@ +import * as api from '../api/api.js'; + +export default { + namespaced: true, + state: { + /* common */ + snackbar: { + color: 'success', + msg: '', + state: false + }, + loading_process: false, + selected_orderaset: {}, + + /* main layout */ + filterpo: { + startdate: moment(new Date()).format('YYYY-MM-DD'), + enddate: moment(new Date()).format('YYYY-MM-DD'), + status: 'All', + search: '' + }, + list_status: ['All', 'Draft', 'Pending', 'Approved', 'Rejected', 'Completed'], + list_asetpo: { + records: [], + total: 0 + }, + currpage: 1, + + /* form order aset */ + dialog_form_orderaset: false, + list_supplier: [], + list_branch: [], + form_orderaset: { + podate: moment(new Date()).format('YYYY-MM-DD'), + supplierID: "", + reference: "", + branchcode: "", + typepajak: "persen", + valuepajak: 0, + typediskon: "persen", + valuediskon: 0 + }, + item_orderaset: [], + summary_orderaset: { + subtotal: 0, + diskon: 0, + pajak: 0, + total: 0 + }, + + dialog_add_itemaset: false, + list_requestaset: { + records: [], + total: 0 + }, + + /* delete order */ + dialog_deleteorder: false, + + /* attachment */ + dialog_attachment: false, + prview_attachment: [], + + }, + mutations: { + /* common */ + update_snackbar(state, val) { + state.snackbar = val + }, + update_loading_process(state, val) { + state.loading_process = val + }, + update_selected_orderaset(state, val) { + state.selected_orderaset = val + }, + + /* main layout */ + update_filterpo(state, val) { + state.filterpo = val + }, + update_list_status(state, val) { + state.list_status = val + }, + update_list_asetpo(state, val) { + state.list_asetpo = val + }, + update_currpage(state, val) { + state.currpage = val + }, + + /* form order aset */ + update_dialog_form_orderaset(state, val) { + state.dialog_form_orderaset = val + }, + update_list_supplier(state, val) { + state.list_supplier = val + }, + update_list_branch(state, val) { + state.list_branch = val + }, + update_form_orderaset(state, val) { + state.form_orderaset = val + }, + update_item_orderaset(state, val) { + state.item_orderaset = val + }, + update_summary_orderaset(state, val) { + state.summary_orderaset = val + }, + update_dialog_add_itemaset(state, val) { + state.dialog_add_itemaset = val + }, + update_list_requestaset(state, val) { + state.list_requestaset = val + }, + + /* delete order */ + update_dialog_deleteorder(state, val) { + state.dialog_deleteorder = val + }, + + /* attachment */ + update_dialog_attachment(state, val) { + state.dialog_attachment = val + }, + update_prview_attachment(state, val) { + state.prview_attachment = val + } + }, + actions: { + async lookupVendor(context) { + try { + const resp = await api.getListSupplier({token: one_token()}); + if (resp.status != 'OK') { + throw new Error(resp.message); + } else { + context.commit('update_list_supplier', resp.data) + } + } catch (error) { + let snac = {color: 'error', msg: error.message, state: true} + context.commit('update_snackbar', snac) + } + }, + async lookupCabang(context) { + try { + const resp = await api.getListCabang({token: one_token()}); + if (resp.status != 'OK') { + throw new Error(resp.message); + } + + context.commit('update_list_branch', resp.data) + } catch (error) { + let snac = {color: 'error', msg: error.message, state: true} + context.commit('update_snackbar', snac) + } + }, + async lookupOrderRequest(context, keyword) { + try { + const form = context.state.form_orderaset + let param = { + token: one_token(), + branchcode: form.branchcode, + search: keyword, + currpage: 1, + supplierID: form.supplierID + } + const resp = await api.searchRequestAset(param) + if (resp.status != 'OK') { + throw new Error(resp.message); + } + + context.commit('update_list_requestaset', resp.data) + } catch (error) { + let snac = {color: 'error', msg: error.message, state: true} + context.commit('update_snackbar', snac) + } + } + } +}