<template>
<div
id="new-purchase-order"
class="left">
<div
class="container">
<NewVendor
:callMethod="updateVendors"></NewVendor>
<div
class="row mt-5">
<div
class="col-sm-10 col-md-8 col-lg-6 mx-auto">
<div
class="card"
>
<div
class="card-header">
<h3 class="card-title text-left">
Add
Purchase
Order
</h3>
</div>
<!-- /.card-header -->
<div
class="card-body col-sm-11 mx-auto">
<!-- TODO: Remove before launch-->
<div
v-if="this.errors">
<div
class="ml-6 error">
<ul class="list-unstyled">
<li v-for="error in errors">
{{
error
}}
</li>
</ul>
</div>
</div>
<form
@submit.prevent="addPurchaseOrder()">
<p class="text-danger text-left">
Required
fields
are
marked
with
an
asterisk
(*).</p>
<!-- First Section-->
<div
class="mb-3">
<div
class="form-group">
<label
class="col-form-label font-weight-bold"
:class="{ 'text-danger' : this.errors.purchaseOrderNumber }">
Purchase
Order
Number
<span
class="text-danger">*</span>
</label>
<div
class="input-group">
<input
v-model="purchaseOrderNumber"
name="purchaseOrderNumber"
type="text"
class="form-control"
:class="{ 'border-danger' : this.errors.purchaseOrderNumber }">
</div>
<div
class="text-danger">
{{
this.errors.purchaseOrderNumber
}}
</div>
</div>
</div>
<div
class="mb-3">
<label
class="col-form-label font-weight-bold">
Sales
Orders
</label>
<select
v-model="selectedOrder.one">
<option
v-for="(salesOrder, index) in salesOrders"
>
{{
salesOrder.number
}}
</option>
</select>
<button
@click.prevent="deleteRow(index)">
Delete
</button>
<button
@click.prevent="addOption">
Add
SO
</button>
</div>
<div
class="mb-3">
<div
class="form-group">
<label
class="col-form-label font-weight-bold"
:class="{ 'text-danger' : this.errors.vendor }">
Vendor
<span
class="text-danger">*</span>
</label>
<div
class="input-group">
<select
class='form-control'
v-model='vendor'
id="vendor"
:class="{ 'border-danger' : this.errors.vendor }">
<option
value=""
disabled>
Select
One
</option>
<option
v-for='vendor in vendors'
:value='vendor.id'
>
{{
vendor.name
}}
</option>
</select>
</div>
<div
class="text-danger">
{{
this.errors.vendor
}}
</div>
<a href="#"
type="button"
class="btn custom-page-link font-sm"
@click.prevent="$modal.show('new-vendor')">
+
Add
New
Vendor
</a>
</div>
</div>
<div
class="mb-3">
<label
class="col-form-label font-weight-bold">
Ship
Date
</label>
<ul>
<li v-for="(input, index) in inputs"
class="pb-2">
<input
type="date"
name="shipDate"
v-model="input.one">
<button
@click="deleteRow(index)">
Delete
</button>
</li>
</ul>
<button
@click.prevent="addRow"
class="btn btn-success">
+
Add
Ship
Date
</button>
</div>
<div
class="mb-3">
<div
class="form-group">
<label
class="col-form-label font-weight-bold">
Date
PO
Sent
to
Vendor
</label>
<div
class="input-group">
<input
v-model="date_sent"
name="date_sent"
type="date"
class="form-control">
</div>
</div>
</div>
<div
class="mb-3">
<div
class="form-group">
<label
class="col-form-label font-weight-bold">
Date
PO
Confirmed
by
Vendor
</label>
<div
class="input-group">
<input
v-model="po_confirmed_date"
name="po_confirmed_date"
type="date"
class="form-control">
</div>
</div>
</div>
<div
class="modal-footer">
<button
class="btn btn-primary"
type="submit">
Submit
</button>
<a href="/order-entry/salesorders"
type="button"
class="btn custom-page-link"
>
Cancel
</a>
</div>
</form>
</div>
<!-- card body-->
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import NewVendor
from "./NewVendor";
export default {
components: {
NewVendor
},
data() {
return {
errors: {},
purchaseOrderNumber: '',
vendors: [],
vendor: '',
date_sent: '',
po_confirmed_date: '',
inputs: [],
shipDate: '',
salesOrders: [],
selectedOrder: []
};
},
methods: {
addPurchaseOrder(e) {
if (this.purchaseOrderNumber && this.vendor) {
axios.post('/purchasing/purchase-orders/create', {
number: this.purchaseOrderNumber,
vendor: this.vendor,
date_sent: this.date_sent,
po_confirmed_date: this.po_confirmed_date,
dates: this.inputs
})
.then((response) => {
swal(
{
title: 'Created!',
text: 'Purchase Order has been created.',
type: 'success'
}
)
.then((ok) => {
if (ok) {
window.location = response.data.redirect;
}
});
})
.catch(error => {
console.log(error)
});
}
this.errors = {};
if (!this.purchaseOrderNumber) {
this.errors.purchaseOrderNumber = 'Please enter a Purchase Order number.';
}
if (!this.vendor) {
this.errors.vendor = 'Please choose a vendor.';
}
},
addRow() {
this.inputs.push({
one: '',
})
},
addOption() {
this.selectedOrder.push({
one: '',
})
},
deleteRow(index) {
this.inputs.splice(index, 1)
},
updateVendors: function () {
axios.get('/api/updateVendors')
.then(function (response) {
this.vendors = response.data;
this.vendor = response.data[0].id;
}.bind(this));
},
},
mounted() {
axios.get('/api/getVendors')
.then(function (response) {
this.vendors = response.data;
// this.customer = response.data[0].id;
}.bind(this));
axios.get('/api/getOrders')
.then(function (response) {
this.salesOrders = response.data;
// this.customer = response.data[0].id;
}.bind(this));
},
};
</script>