Advertisement
vitareinforce

inventory.vue

Feb 25th, 2020
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.32 KB | None | 0 0
  1. <template>
  2. <div class="row">
  3. <div class="col-lg-12">
  4. <b-tabs pills card>
  5. <b-tab title="Data Barang" active>
  6. <!-- <b-alert
  7. :show="dismissCountDown"
  8. dismissible
  9. variant="warning"
  10. @dismissed="dismissCountDown=0"
  11. @dismiss-count-down="countDownChanged"
  12. >
  13. This alert will dismiss after {{ dismissCountDown }} seconds...
  14. </b-alert> -->
  15. <div v-if="loading && !$route.name.includes('.create')" class="d-flex justify-content-center mb-3">
  16. <b-spinner label="Loading..."></b-spinner>
  17. </div>
  18. <div v-if="$route.name.includes('.detail')" class="row">
  19. <div class="col-lg-12 button-back-div">
  20. <router-link :to="{ name: 'InventoryManagement.index' }" class="btn btn-primary">Kembali</router-link>
  21. </div>
  22. </div>
  23. <div class="row">
  24. <div class="col-lg-12" style="padding-left: 30px; padding-right: 40px;">
  25. <div class="row">
  26. <!-- Nomor Barang field -->
  27. <div class="col-lg-6">
  28. <div class="form-group form-float">
  29. <label class="form-label" style="color: black;">Nomor Barang</label>
  30. <input v-model="inventory.Code" :disabled="$route.name.includes('.detail')" placeholder="Ketik nomor barang..." type="text" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  31. </div>
  32. </div>
  33. <!-- Nama Bendera - Cabang field -->
  34. <div class="col-lg-6">
  35. <div class="form-group form-float">
  36. <label for="legalEntityName" class="form-label" style="color: black;">Bendera</label>
  37. <vue-select :disabled="$route.name.includes('.detail')" v-model="selectedLegalEntity" class="vue-select2" name="role" :options="legalEntity" label="Name"></vue-select>
  38. </div>
  39. </div>
  40.  
  41. <!-- Nama Bendera - Cabang field -->
  42. <div class="col-lg-6">
  43. <div class="form-group form-float">
  44. <label for="branchName" class="form-label" style="color: black;">Cabang</label>
  45. <vue-select :disabled="$route.name.includes('.detail')" v-model="selectedBranch" class="vue-select2" name="role" :options="branch" label="Name"></vue-select>
  46. </div>
  47. </div>
  48.  
  49. <!-- Nama Barang field -->
  50. <div class="col-lg-6">
  51. <div class="form-group form-float">
  52. <label class="form-label" style="color: black;">Nama Barang</label>
  53. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan nama barang..." type="text" v-model="inventory.Name" name="ProductName" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  54. </div>
  55. </div>
  56.  
  57. <!-- Kategori Barang field -->
  58. <div class="col-lg-6">
  59. <div class="form-group form-float">
  60. <label for="branchName" class="form-label" style="color: black;">Kategori Barang</label>
  61. <vue-select :disabled="$route.name.includes('.detail')" v-model="inventory.Category" class="vue-select2" name="role" :options="category" label="Name"></vue-select>
  62. </div>
  63. </div>
  64.  
  65. <!-- Kategori Gudang field -->
  66. <div class="col-lg-6">
  67. <div class="form-group form-float">
  68. <label for="branchName" class="form-label" style="color: black;">Kategori Gudang</label>
  69. <vue-select :disabled="$route.name.includes('.detail')" v-model="inventory.WarehouseCategory" class="vue-select2" name="role" :options="warehouseCategory"></vue-select>
  70. </div>
  71. </div>
  72.  
  73. <!-- Perakitan field -->
  74. <!-- <div class="col-lg-6">
  75. <div class="form-group form-float">
  76. <label for="branchName" class="form-label" style="color: black;">Perakitan</label>
  77. <vue-select :disabled="$route.name.includes('.detail')" v-model="inventory.isAssembly" class="vue-select2" name="role" :options="assemblyOptions"></vue-select>
  78. </div>
  79. </div> -->
  80.  
  81. <!-- Perakitan field -->
  82. <div class="col-lg-6">
  83. <div class="form-group form-float">
  84. <label for="branchName" class="form-label" style="color: black;">Maintenance dan Repair</label>
  85. <vue-select :disabled="$route.name.includes('.detail')" v-model="inventory.IsMaintenance" class="vue-select2" name="role" :options="maintenanceOptions"></vue-select>
  86. </div>
  87. </div>
  88. </div>
  89.  
  90. <hr />
  91.  
  92. <div class="row">
  93. <!-- Jumlah Barang field -->
  94. <div class="col-lg-6">
  95. <div class="form-group form-float">
  96. <label for="oneHundredCondition" class="form-label" style="color: black;">Jumlah Barang</label>
  97. <input disabled placeholder="Masukkan jumlah barang..." id="oneHundredCondition" type="text" v-model="inventory.TotalQuantity" name="OneHundredCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  98. </div>
  99. </div>
  100.  
  101. <!-- Jumlah Point field -->
  102. <div class="col-lg-6">
  103. <div class="form-group form-float">
  104. <label for="oneHundredCondition" class="form-label" style="color: black;">Jumlah Point</label>
  105. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan point..." id="oneHundredCondition" type="text" v-model="inventory.Point" name="OneHundredCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  106. </div>
  107. </div>
  108.  
  109. <!-- Jumlah Barang Kondisi 100% field -->
  110. <div class="col-lg-6">
  111. <div class="form-group form-float">
  112. <label for="oneHundredCondition" class="form-label" style="color: black;">Jumlah Barang Kondisi 100%</label>
  113. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan jumlah barang..." id="oneHundredCondition" type="text" v-model="inventory.Quantity100" name="OneHundredCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  114. </div>
  115. </div>
  116.  
  117. <!-- Harga Barang Kondisi 100% field -->
  118. <div class="col-lg-6">
  119. <div class="form-group form-float">
  120. <label for="oneHundredPrice" class="form-label" style="color: black;">Harga Barang Kondisi 100% (Rp)</label>
  121. <input v-if="!$route.name.includes('.detail')" placeholder="Masukkan harga barang..." id="oneHundredPrice" type="text" v-model="inventory.Price100" name="OneHundredPrice" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  122. <div v-if="$route.name.includes('.detail')" class="form-control disabled-field">{{ inventory.Price100 | currency }}</div>
  123. </div>
  124. </div>
  125.  
  126. <!-- Jumlah Barang Kondisi 90% field -->
  127. <div class="col-lg-6">
  128. <div class="form-group form-float">
  129. <label for="sixtyCondition" class="form-label" style="color: black;">Jumlah Barang Kondisi 90%</label>
  130. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan jumlah barang..." id="sixtyCondition" type="text" v-model="inventory.Quantity90" name="SixtyCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  131. </div>
  132. </div>
  133.  
  134. <!-- Harga Barang Kondisi 90% field -->
  135. <div class="col-lg-6">
  136. <div class="form-group form-float">
  137. <label for="sixtyPrice" class="form-label" style="color: black;">Harga Barang Kondisi 90% (Rp)</label>
  138. <input v-if="!$route.name.includes('.detail')" placeholder="Masukkan harga barang..." id="sixtyPrice" type="text" v-model="inventory.Price90" name="SixtyPrice" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  139. <div v-if="$route.name.includes('.detail')" class="form-control disabled-field">{{ inventory.Price90 | currency }}</div>
  140. </div>
  141. </div>
  142.  
  143. <!-- Jumlah Barang Kondisi 60% field -->
  144. <div class="col-lg-6">
  145. <div class="form-group form-float">
  146. <label for="thirtyCondition" class="form-label" style="color: black;">Jumlah Barang Kondisi 60%</label>
  147. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan jumlah barang..." id="thirtyCondition" type="text" v-model="inventory.Quantity60" name="ThirtyCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  148. </div>
  149. </div>
  150.  
  151. <!-- Harga Barang Kondisi 60% field -->
  152. <div class="col-lg-6">
  153. <div class="form-group form-float">
  154. <label for="thirtyPrice" class="form-label" style="color: black;">Harga Barang Kondisi 60% (Rp)</label>
  155. <input v-if="!$route.name.includes('.detail')" placeholder="Masukkan harga barang..." id="thirtyPrice" type="text" v-model="inventory.Price60" name="ThirtyPrice" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  156. <div v-if="$route.name.includes('.detail')" class="form-control disabled-field">{{ inventory.Price60 | currency }}</div>
  157. </div>
  158. </div>
  159.  
  160. <!-- Jumlah Barang Kondisi dibawah 30% field -->
  161. <div class="col-lg-6">
  162. <div class="form-group form-float">
  163. <label for="belowThirtyCondition" class="form-label" style="color: black;">Jumlah Barang Kondisi dibawah 30%</label>
  164. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan jumlah barang..." id="belowThirtyCondition" type="text" v-model="inventory.Quantity30" name="BelowThirtyCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  165. </div>
  166. </div>
  167. <div class="col-lg-6">
  168. <div class="form-group form-float">
  169. <label for="belowThirtyCondition" class="form-label" style="color: black;">Jumlah Barang Rekondisi</label>
  170. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan jumlah barang..." id="belowThirtyCondition" type="text" v-model="inventory.RefurbishQuantity" name="BelowThirtyCondition" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175.  
  176.  
  177.  
  178. <div class="col-lg-12" style="padding-left: 30px; padding-right: 40px;">
  179.  
  180. <hr />
  181.  
  182. <div class="row">
  183. <!-- Lokasi field -->
  184. <div class="col-lg-6">
  185. <div class="form-group form-float">
  186. <label for="safetyStockLimit" class="form-label" style="color: black;">Lokasi</label>
  187. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan lokasi / blok..." id="safetyStockLimit" type="text" v-model="inventory.Location" name="safetyStockLimit" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  188. </div>
  189. </div>
  190. <!-- Batas Safety Stock field -->
  191. <div class="col-lg-6">
  192. <div class="form-group form-float">
  193. <label for="safetyStockLimit" class="form-label" style="color: black;">Safety Stock</label>
  194. <input :disabled="$route.name.includes('.detail')" placeholder="Masukkan jumlah barang..." id="safetyStockLimit" type="text" v-model="inventory.SafetyStockLimit" name="safetyStockLimit" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  195. </div>
  196. </div>
  197. </div>
  198. <!-- <div class="col-lg-12" v-if="!$route.name.includes('.create')"> -->
  199.  
  200. <hr />
  201.  
  202. <div class="row">
  203. <div class="col-lg-12">
  204. <div class="row">
  205. <div class="col-lg-6">
  206. <!-- Nama Supplier Field -->
  207. <div class="form-group form-float">
  208. <label class="form-label" style="color: black;">Suppliers</label>
  209. <vue-select :disabled="$route.name.includes('.detail')" v-model="selectedSupplier" class="vue-select2" name="role" :options="supplier" label="Name"></vue-select>
  210. </div>
  211. </div>
  212. <div class="col-lg-6">
  213. <div class="form-group form-float">
  214. <label for="productPriceHPP" class="form-label" style="color: black;">Harga Barang (HPP) dalam Rp</label>
  215. <input v-if="!$route.name.includes('.detail')" placeholder="Masukkan harga barang..." id="safetyStockLimit" type="text" v-model="inventory.BuyingPrice" name="safetyStockLimit" required maxlength="32" minlength="2" class="validate form-control" style="border: 1px solid black;">
  216. <div v-if="$route.name.includes('.detail')" class="form-control disabled-field">{{ inventory.BuyingPrice | currency }}</div>
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. <div class="col-lg-12">
  222. <hr />
  223. <div class="row" style="margin-top: 30px;">
  224. <div class="col-lg-6">
  225. <div class="form-group form-float">
  226. <!-- Foto field -->
  227. <label class="form-label" style="color: black;">Foto 1</label>
  228. <br />
  229. <img v-if="!$route.name.includes('.create')" :src="'data:image/jpeg;base64,' + inventory.Picture1" class="img-fluid img-thumbnail w100" />
  230. <base64-upload v-if="!$route.name.includes('.detail')" class="img-fluid img-thumbnail" imageSrc="/img/uploads.png" @change="onChangeImage1" style="width: 50%;">Upload photo</base64-upload>
  231. </div>
  232. </div>
  233. <div class="col-lg-6">
  234. <div class="form-group form-float">
  235. <!-- Foto field -->
  236. <label class="form-label" style="color: black;">Foto 2</label>
  237. <br />
  238. <img v-if="!$route.name.includes('.create')" :src="'data:image/jpeg;base64,' + inventory.Picture2" class="img-fluid img-thumbnail w100" />
  239. <base64-upload v-if="!$route.name.includes('.detail')" class="img-fluid img-thumbnail" imageSrc="/img/uploads.png" @change="onChangeImage2" style="width: 50%;">Upload photo</base64-upload>
  240. </div>
  241. </div>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. </div>
  247. <div v-if="!$route.name.includes('.detail')" class="row">
  248. <div class="col-lg-12 button-div">
  249. <button v-on:click="save()" class="btn btn-success">Simpan</button>
  250. <router-link :to="{ name: 'InventoryManagement.index' }" class="btn btn-default">Batal</router-link>
  251. </div>
  252. </div>
  253.  
  254. </b-tab>
  255. <b-tab v-if="$route.name.includes('.detail')" title="Riwayat Harga" style="height: 70px;">
  256. <div class="row">
  257. <div v-if="loading" class="d-flex justify-content-center mb-3">
  258. <b-spinner label="Loading..."></b-spinner>
  259. </div>
  260. </div>
  261. <div v-if="$route.name.includes('.detail')" class="row">
  262. <div class="col-lg-12 button-back-div">
  263. <router-link :to="{ name: 'InventoryManagement.index' }" class="btn btn-primary">Kembali</router-link>
  264. </div>
  265. </div>
  266. <div class="row history-stock-row">
  267. <div class="col-lg-7 stock-in-history">
  268. <h5>Histori Barang Masuk</h5>
  269. <b-table striped hover
  270. id="history"
  271. :items="filtered"
  272. :fields="historyStockInFields"
  273. class="table table-hover table-striped"
  274. style="margin-top: 10px;">
  275. <template v-slot:cell(EmployeeId)="data">
  276. {{ employee[data.item.EmployeeId].Name }}
  277. </template>
  278. <template v-slot:cell(SupplierId)="data">
  279. {{ supplierLookup[data.item.SupplierId].Name }}
  280. </template>
  281. <template v-slot:cell(BuyingPrice)="data">
  282. {{ data.item.BuyingPrice | currency }}
  283. </template>
  284. <template v-slot:cell(SellingPrice)="data">
  285. {{ data.item.SellingPrice | currency }}
  286. </template>
  287. </b-table>
  288. </div>
  289. <div class="col-lg-5 stock-out-history">
  290. <h5>Histori Barang Keluar</h5>
  291. <b-table striped hover
  292. id="history"
  293. :items="filtered"
  294. :fields="historyStockOutFields"
  295. class="table table-hover table-striped"
  296. style="margin-top: 10px;">
  297. <template v-slot:cell(EmployeeId)="data">
  298. {{ employee[data.item.EmployeeId].Name }}
  299. </template>
  300. <template v-slot:cell(SupplierId)="data">
  301. {{ supplierLookup[data.item.SupplierId].Name }}
  302. </template>
  303. <template v-slot:cell(BuyingPrice)="data">
  304. {{ data.item.BuyingPrice | currency }}
  305. </template>
  306. <template v-slot:cell(SellingPrice)="data">
  307. {{ data.item.SellingPrice | currency }}
  308. </template>
  309. </b-table>
  310. </div>
  311. </div>
  312.  
  313. </b-tab>
  314. </b-tabs>
  315. </div>
  316. </div>
  317. </template>
  318.  
  319. <style>
  320. .card-header {
  321. width: 100% !important;
  322. height: 70px;
  323. background-color: #20c197;
  324. border-radius: 0px !important;
  325. padding-left: 10px;
  326. padding-top: 0px;
  327. padding-right: 0px;
  328. padding-bottom: 0px;
  329. }
  330.  
  331. .nav-pills .nav-link.active, .nav-pills .show > .nav-link {
  332. color: black;
  333. height: 70px;
  334. width: 200px;
  335. padding-top: 16px;
  336. text-align: center;
  337. font-size: 20px;
  338. background-color: #f8f8ff;
  339. border-radius: 0px;
  340. border-bottom: 3px solid #0059aa;
  341. }
  342.  
  343. .button-div {
  344. text-align: right;
  345. margin-top: 30px;
  346. }
  347.  
  348. .btn-success {
  349. width: 132px;
  350. background-color: #20c197;
  351. border: none;
  352. }
  353.  
  354. .btn-danger {
  355. width: 132px;
  356. margin-left: 15px;
  357. border: none;
  358. }
  359.  
  360. .disabled-field {
  361. background-color: #E9ECEF;
  362. border: 1px solid black;
  363. }
  364.  
  365. .history-stock-row {
  366. margin-top: 30px;
  367. }
  368.  
  369. .stock-in-history {
  370. padding-right: 30px;
  371. border-right: 1px solid #000000
  372. }
  373.  
  374. .stock-out-history {
  375. padding-left: 30px;
  376. }
  377. </style>
  378.  
  379.  
  380. <script>
  381. // Plugins
  382. import moment from 'moment'
  383. import $ from 'jquery'
  384. import VueSelect from 'vue-select'
  385. import 'vue-select/dist/vue-select.css'
  386. import Base64Upload from 'vue-base64-upload'
  387.  
  388. // API
  389. import LegalEntity from '@/services/Companies/LegalEntities'
  390. import Branch from '@/services/Companies/Branches'
  391. import Suppliers from '@/services/Inventories/Supplier'
  392. import Inventories from '@/services/Inventories/Inventory'
  393. import Employees from '@/services/Employees/Employees'
  394.  
  395. export default {
  396. name: 'InventoryManagement.create',
  397. components: {
  398. VueSelect,
  399. Base64Upload
  400. },
  401. computed: {
  402. filtered: function () {
  403. return this.inventoryHistory.filter(i => i.ItemId == this.inventory.Id)
  404. }
  405. },
  406. data () {
  407. return {
  408. //Loading
  409. loading: true,
  410. // Scope, Sama kyk vm.users , vm.employee dkk
  411. userData: {},
  412.  
  413. historyStockInFields: [
  414. { key: 'created_at', label: 'Tanggal', sortable: true },
  415. { key: 'EmployeeId', label: 'Nama Editor' },
  416. { key: 'SupplierId', label: 'Nama Supplier' },
  417. { key: 'BuyingPrice', label: 'Harga Beli Barang' },
  418. { key: 'TotalQuantity', label: 'Jumlah Barang Masuk' },
  419. ],
  420. historyStockOutFields: [
  421. { key: 'created_at', label: 'Tanggal', sortable: true },
  422. { key: 'EmployeeId', label: 'Nama Editor' },
  423. { key: 'SellingPrice', label: 'Harga Jual Barang' },
  424. { key: 'SellingQuantity', label: 'Jumlah Barang Keluar' },
  425. ],
  426. inventory: {
  427. Quantity100: 0,
  428. Price100: 0,
  429. Quantity90: 0,
  430. Price90: 0,
  431. Quantity60: 0,
  432. Price60: 0,
  433. Quantity30: 0,
  434. RefurbishQuantity: 0,
  435. BuyingPrice: 0
  436. },
  437. inventoryHistory: [],
  438. legalEntity: {},
  439. branch: {},
  440. supplier: {},
  441. supplierLookup: [],
  442. employee: [],
  443. selectedLegalEntity: {},
  444. selectedBranch: {},
  445. selectedSupplier: {},
  446. assemblyOptions: ['Perlu Dirakit','Tidak Perlu Dirakit'],
  447. category: ['-','Barang Inti', 'Barang Hadiah'],
  448. warehouseCategory: ['Alat Tulis', 'Barang Siap Jual'],
  449. maintenanceOptions: ['Perlu Maintenance dan Repair','Tidak Perlu Maintenance dan Repair']
  450. }
  451. },
  452. beforeUpdate: function () {
  453. // Ngeassign variable pada saat proses update, misal kyk dropdown
  454. this.inventory.SellingPrice = this.inventory.Price100
  455. this.inventory.LegalEntityId = this.selectedLegalEntity.Id
  456. this.inventory.BranchId = this.selectedBranch.Id
  457. this.inventory.SupplierId = this.selectedSupplier.Id
  458. //this.inventory.BuyingPrice = this.selectedSupplier.ItemPrice
  459. this.inventory.TotalQuantity = parseInt(this.inventory.Quantity100)
  460. + parseInt(this.inventory.Quantity90)
  461. + parseInt(this.inventory.Quantity60)
  462. + parseInt(this.inventory.Quantity30)
  463. },
  464. mounted: function () {
  465. // Sama dengan document.ready
  466. window.$ = $
  467. if(localStorage.userData !== undefined) {
  468. this.userData = JSON.parse(localStorage.userData)
  469. this.userData.Permissions = JSON.parse(this.userData.Permissions)
  470. } else {
  471. this.$router.push({ name: 'home' })
  472. location.reload()
  473. }
  474. this.init()
  475. },
  476. methods: {
  477. // Kumpulan Fungsi disini
  478. init: async function() {
  479. // Ngeload Data Dari API
  480. let legalEntity = await LegalEntity.index()
  481. let branch = await Branch.index()
  482. let supplier = await Suppliers.index()
  483. let employee = await Employees.index()
  484.  
  485. // Assign data ke Scope
  486. this.legalEntity = legalEntity.data
  487. this.branch = branch.data
  488. this.supplier = supplier.data
  489. this.supplierLookup = this.itemLookup(supplier.data)
  490. this.employee = this.itemLookup(employee.data)
  491.  
  492. //for edit mode
  493. if(this.$route.params.id) {
  494. let edit = await Inventories.detail(this.$route.params.id)
  495. let history = await Inventories.getHistory()
  496. this.inventory = edit.data
  497. this.inventoryHistory = history.data
  498.  
  499. this.selectedLegalEntity = this.lookupData(legalEntity.data, edit.data.LegalEntityId)
  500. this.selectedBranch = this.lookupData(branch.data, edit.data.BranchId)
  501. this.selectedSupplier = this.lookupData(supplier.data, edit.data.SupplierId)
  502.  
  503. if(this.inventory.IsMaintenance == 1) {
  504. this.inventory.IsMaintenance = 'Perlu Maintenance dan Repair'
  505. }
  506. if(this.inventory.IsMaintenance == 0) {
  507. this.inventory.IsMaintenance ='Tidak Perlu Maintenance dan Repair'
  508. }
  509.  
  510. if(this.inventory.isAssembly == 1) {
  511. this.inventory.isAssembly = 'Perlu Dirakit'
  512. }
  513. if(this.inventory.isAssembly == 0) {
  514. this.inventory.isAssembly ='Tidak Perlu Dirakit'
  515. }
  516. }
  517.  
  518. this.loading = false
  519. },
  520. save: async function() {
  521. // Fungsi Save Data
  522. this.inventory.IsDeleted = false
  523. this.inventory.CreationTime = new Date()
  524. this.inventory.CreatorUserId = this.userData.Id
  525. this.inventory.IsAssembly = (this.inventory.IsAssembly == 'true')
  526. this.inventory.IsRefurbish = false
  527. this.inventory.UnasemblyQuantity = 0
  528. this.inventory.AssemblyQuantity = 0
  529. this.inventory.StockOpnameQuantity = 0
  530. this.inventory.RefurbishQuantity = 0
  531.  
  532. if(this.inventory.IsMaintenance == 'Perlu Maintenance dan Repair') {
  533. this.inventory.IsMaintenance = 1
  534. }
  535. if(this.inventory.IsMaintenance == 'Tidak Perlu Maintenance dan Repair') {
  536. this.inventory.IsMaintenance = 0
  537. }
  538.  
  539. if(this.inventory.isAssembly == 'Perlu Dirakit') {
  540. this.inventory.isAssembly = 1
  541. }
  542. if(this.inventory.isAssembly == 'Tidak Perlu Dirakit') {
  543. this.inventory.isAssembly = 0
  544. }
  545.  
  546. console.log(this.inventory)
  547. try {
  548. let result
  549. let itemIds
  550. if(this.$route.params.id) {
  551. result = await Inventories.edit(this.$route.params.id, this.inventory)
  552. itemIds = this.$route.params.id
  553. }
  554. if(!this.$route.params.id) {
  555. //this.inventory.BuyingPrice = 0
  556. console.log("create mode")
  557. result = await Inventories.create(this.inventory)
  558. }
  559. if(result.status == 200) {
  560. console.log(result.data)
  561. //set history
  562. if(!this.$route.params.id) {
  563. itemIds = result.data.id
  564. }
  565.  
  566. let historyData = {
  567. ItemId: itemIds,
  568. EmployeeId: this.userData.EmployeeId,
  569. SupplierId: this.inventory.SupplierId,
  570. BuyingPrice: this.inventory.BuyingPrice,
  571. TotalQuantity: this.inventory.TotalQuantity,
  572. SellingPrice: this.inventory.SellingPrice,
  573. SellingQuantity: 0
  574. }
  575.  
  576. let resultHistory = await Inventories.setHistory(historyData)
  577.  
  578. if(resultHistory.status == 200) {
  579. this.$fire({
  580. title: "Sukses",
  581. text: "Input Data Sukses",
  582. // icon: "success",
  583. // type: "success",
  584. showConfirmButton: false
  585. })
  586.  
  587. // alert(result.data.message)
  588. // alert(resultHistory.data.message)
  589. // setTimeout(function(){alert(result.data.message);}, 2500)
  590. // setTimeout(function(){alert(resultHistory.data.message);}, 2500)
  591. this.$router.push({ name: 'InventoryManagement.index' })
  592. location.reload()
  593. }
  594.  
  595. } else {
  596. this.$fire({
  597. title: "Error",
  598. text: "Input Data Gagal",
  599. showConfirmButton: false
  600. // icon: "error",
  601. // type: "error"
  602. })
  603. // alert("Registrasi Gagal")
  604. // this.dismissCountDown = this.dismissSecs
  605. console.log(result)
  606. }
  607. } catch (error) {
  608. this.$fire({
  609. title: 'Error',
  610. text: error,
  611. icon: 'info'
  612. })
  613. // alert("Error : " + error)
  614. // this.dismissCountDown = this.dismissSecs
  615. }
  616. // this.dismissCountDown = this.dismissSecs
  617. },
  618. countDownChanged(dismissCountDown) {
  619. this.dismissCountDown = dismissCountDown
  620. },
  621. onChangeImage1(file) {
  622. this.inventory.Picture1 = file.base64
  623. },
  624. onChangeImage2(file) {
  625. this.inventory.Picture2 = file.base64
  626. },
  627. itemLookup: function (json) {
  628. let data = []
  629. for(var i = 0; i< json.length; i++) {
  630. data[json[i].Id] = json[i]
  631. }
  632. return data
  633. },
  634. lookupData (json, id) {
  635. let data = []
  636. for(var i = 0; i < json.length; i++) {
  637. data[json[i].Id] = json[i]
  638. }
  639. return data[id]
  640. },
  641. formatDate(time) {
  642. // Format Tanggal
  643. var formattedTime = moment(time).format('DD MMMM YYYY HH:mm')
  644. if(formattedTime == 'Invalid date') {
  645. formattedTime = '-'
  646. }
  647. return formattedTime
  648. }
  649. }
  650. }
  651. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement