import * as api from "../api/api.js" export default { namespaced: true, state: { dialog_confirmation: false, dialog_delete: false, dialog_detail_view: false, snackbar: { color: 'success', msg: '', isOpen: false }, filter: { startdate: moment(new Date()).format('YYYY-MM-DD'), enddate: moment(new Date()).format('YYYY-MM-DD'), search: '' }, curr_page: 1, list_data_ro: { records: [], total: 1 }, list_supplier: [], list_warehouse: [], selected_ro: {}, list_staff: [] }, mutations: { update_dialog_confirmation(state, data) { state.dialog_confirmation = data }, update_dialog_delete(state, data) { state.dialog_delete = data }, update_dialog_detail_view(state, data) { state.dialog_detail_view = data }, update_snackbar(state, data) { state.snackbar = data }, update_filter(state, data) { state.filter = data }, update_curr_page(state, data) { state.curr_page = data }, update_list_data_ro(state, data) { state.list_data_ro = data }, update_list_supplier(state, val) { state.list_supplier = val }, update_list_warehouse(state, val) { state.list_warehouse = val }, update_selected_ro(state, val) { state.selected_ro = val }, update_list_staff(state, val) { state.list_staff = val } }, actions: { async search(context) { try { let param = { token: one_token(), page: context.state.curr_page, ...context.state.filter } console.log("search OR"); let resp = await api.search(param); if (resp.status != 'OK') { context.commit("update_snackbar", { color: 'error', msg: resp.message, isOpen: true }); } else { context.commit("update_list_data_ro", resp.data); } } catch (error) { context.commit("update_snackbar", { color: 'error', msg: error.message, isOpen: true }); } }, async getSupplier(context) { try { let param = { token: one_token(), search: '' } const resp = await api.getSupplier(param); if (resp.status != 'OK') { context.commit("update_snackbar", { color: 'error', msg: resp.message, isOpen: true }); } else { context.commit("update_list_supplier", resp.data); } } catch (error) { context.commit("update_snackbar", { color: 'error', msg: error.message, isOpen: true }); } }, async getWarehouse(context) { try { let param = { token: one_token() } const resp = await api.getWarehouse(param); if (resp.status != 'OK') { context.commit("update_snackbar", { color: 'error', msg: resp.message, isOpen: true }); } else { context.commit("update_list_warehouse", resp.data); } } catch (error) { context.commit("update_snackbar", { color: 'error', msg: error.message, isOpen: true }); } }, async getItemUpdate(context) { try { let param = { token: one_token(), ROID: context.state.selected_ro.ReceiveOrderPoID } const resp = await api.getItemUpdate(param); if (resp.status != 'OK') { context.commit("update_snackbar", { color: 'error', msg: resp.message, isOpen: true }); } else { let temp_ship = [] resp.data.forEach(element => { let ship = { num_po: element.PurchaseOrderNumber, cost: element.PurchaseOrderShippingCost, isUpfront: element.PurchaseOrderShippingCostStatus } const isExist = context.rootState.form.shipping_info.some( item => item.num_po == element.PurchaseOrderNumber ); if (!isExist) { temp_ship.push(ship); } }); let form = { receive_date: context.state.selected_ro.ReceiveOrderPoIDate, number_do: context.state.selected_ro.ReceiveOrderPoDONumber, referensi: context.state.selected_ro.ReceiveOrderPoRefNumber, supplier: { SupplierID: context.state.selected_ro.SupplierID, SupplierName: context.state.selected_ro.SupplierName }, warehouse: { WarehouseID: context.state.selected_ro.WarehouseID, WarehouseName: context.state.selected_ro.WarehouseName, WarehouseCode: context.state.selected_ro.WarehouseCode }, shipping_cost: context.state.selected_ro.ReceiveOrderShippingCostAmount, note: context.state.selected_ro.ReceiveOrderPoNote } context.commit("form/update_form_receive", form, {root: true}); context.commit("form/update_shipping_info", temp_ship, {root: true}); context.commit("form/update_form_receive_item", resp.data, {root: true}); } } catch (error) { context.commit("update_snackbar", { color: 'error', msg: error.message, isOpen: true }); } }, async deleteRO(context) { try { let param = { token: one_token(), ROID: context.state.selected_ro.ReceiveOrderPoID } const resp = await api.deleteRO(param); if (resp.status != 'OK') { context.commit("update_snackbar", { color: 'error', msg: resp.message, isOpen: true }); } else { context.commit("update_selected_ro", {}); context.dispatch("search", {}); context.commit("update_snackbar", { color: 'success', msg: resp.data, isOpen: true }); context.commit("update_dialog_delete", false); } } catch (error) { context.commit("update_snackbar", { color: 'error', msg: error.message, isOpen: true }); } }, async getListStaff(context) { try { let resp = await api.getListStaff({token: one_token()}) if (resp.status != 'OK') { context.commit("update_snackbar", { color: 'error', msg: resp.message, isOpen: true }); } else { context.commit("update_list_staff", resp.data) } } catch (error) { context.commit("update_snackbar", { color: 'error', msg: error.message, isOpen: true }); } } } }