326 lines
15 KiB
HTML
326 lines
15 KiB
HTML
|
|
{{define "title"}}Enquiry: {{.Enquiry.Title}} - CMC Sales{{end}}
|
||
|
|
|
||
|
|
{{define "content"}}
|
||
|
|
<!-- Header -->
|
||
|
|
<div class="level">
|
||
|
|
<div class="level-left">
|
||
|
|
<div class="level-item">
|
||
|
|
<h1 class="title">Enquiry: {{.Enquiry.Title}}</h1>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="level-right">
|
||
|
|
<div class="level-item">
|
||
|
|
<div class="buttons">
|
||
|
|
<a href="/enquiries/{{.Enquiry.ID}}/edit" class="button is-warning">
|
||
|
|
<span class="icon">
|
||
|
|
<i class="fas fa-edit"></i>
|
||
|
|
</span>
|
||
|
|
<span>Edit</span>
|
||
|
|
</a>
|
||
|
|
<a href="/enquiries" class="button is-light">
|
||
|
|
<span class="icon">
|
||
|
|
<i class="fas fa-arrow-left"></i>
|
||
|
|
</span>
|
||
|
|
<span>Back to List</span>
|
||
|
|
</a>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="columns">
|
||
|
|
<!-- Main Enquiry Details -->
|
||
|
|
<div class="column is-8">
|
||
|
|
<div class="card">
|
||
|
|
<header class="card-header">
|
||
|
|
<p class="card-header-title">Enquiry Details</p>
|
||
|
|
</header>
|
||
|
|
<div class="card-content">
|
||
|
|
<div class="content">
|
||
|
|
<div class="columns">
|
||
|
|
<div class="column">
|
||
|
|
<table class="table is-fullwidth">
|
||
|
|
<tbody>
|
||
|
|
<tr>
|
||
|
|
<td><strong>Enquiry Number:</strong></td>
|
||
|
|
<td>{{.Enquiry.Title}}</td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td><strong>Created:</strong></td>
|
||
|
|
<td>{{.Enquiry.Created.Format "2 Jan 2006 15:04"}}</td>
|
||
|
|
</tr>
|
||
|
|
{{if .Enquiry.Submitted.Valid}}
|
||
|
|
<tr>
|
||
|
|
<td><strong>Submitted:</strong></td>
|
||
|
|
<td>{{.Enquiry.Submitted.Time.Format "2 Jan 2006"}}</td>
|
||
|
|
</tr>
|
||
|
|
{{end}}
|
||
|
|
<tr>
|
||
|
|
<td><strong>Sales Rep:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if and .Enquiry.UserFirstName.Valid .Enquiry.UserLastName.Valid}}
|
||
|
|
<a href="/users/{{.Enquiry.UserID}}">
|
||
|
|
{{.Enquiry.UserFirstName.String}} {{.Enquiry.UserLastName.String}}
|
||
|
|
</a>
|
||
|
|
{{else}}
|
||
|
|
-
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td><strong>Status:</strong></td>
|
||
|
|
<td>
|
||
|
|
<span class="tag is-info">
|
||
|
|
{{if .Enquiry.StatusName.Valid}}
|
||
|
|
{{.Enquiry.StatusName.String}}
|
||
|
|
{{else}}
|
||
|
|
Unknown
|
||
|
|
{{end}}
|
||
|
|
</span>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td><strong>Posted:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if .Enquiry.Posted}}
|
||
|
|
<span class="tag is-success">Yes</span>
|
||
|
|
{{else}}
|
||
|
|
<span class="tag is-warning">No</span>
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td><strong>GST:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if .Enquiry.Gst}}
|
||
|
|
<span class="tag is-success">Applicable</span>
|
||
|
|
{{else}}
|
||
|
|
<span class="tag is-light">Not Applicable</span>
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
{{if .Enquiry.Comments}}
|
||
|
|
<div class="field">
|
||
|
|
<label class="label">Comments</label>
|
||
|
|
<div class="content">
|
||
|
|
<p style="white-space: pre-wrap;">{{.Enquiry.Comments}}</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
{{end}}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Related Documents -->
|
||
|
|
<div class="card mt-5">
|
||
|
|
<header class="card-header">
|
||
|
|
<p class="card-header-title">Related Documents</p>
|
||
|
|
</header>
|
||
|
|
<div class="card-content">
|
||
|
|
<div class="content">
|
||
|
|
<div class="columns">
|
||
|
|
<div class="column">
|
||
|
|
<h6 class="subtitle is-6">Quick Stats</h6>
|
||
|
|
<div class="tags">
|
||
|
|
<span class="tag">{{.Enquiry.EmailCount}} Emails</span>
|
||
|
|
<span class="tag">{{.Enquiry.QuoteCount}} Quotes</span>
|
||
|
|
<span class="tag">{{.Enquiry.InvoiceCount}} Invoices</span>
|
||
|
|
<span class="tag">{{.Enquiry.JobCount}} Jobs</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Placeholder for related documents - would need additional queries -->
|
||
|
|
<div class="notification is-light">
|
||
|
|
<p><strong>Note:</strong> Related quotes, invoices, jobs, and email correspondence would be displayed here. These require additional database queries and relationships to be implemented.</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Sidebar -->
|
||
|
|
<div class="column is-4">
|
||
|
|
<!-- Customer Information -->
|
||
|
|
<div class="card">
|
||
|
|
<header class="card-header">
|
||
|
|
<p class="card-header-title">Customer</p>
|
||
|
|
</header>
|
||
|
|
<div class="card-content">
|
||
|
|
<div class="content">
|
||
|
|
{{if .Enquiry.CustomerName.Valid}}
|
||
|
|
<h6 class="subtitle is-6">
|
||
|
|
<a href="/customers/{{.Enquiry.CustomerID}}">{{.Enquiry.CustomerName.String}}</a>
|
||
|
|
</h6>
|
||
|
|
{{end}}
|
||
|
|
|
||
|
|
<table class="table is-fullwidth">
|
||
|
|
<tbody>
|
||
|
|
<tr>
|
||
|
|
<td><strong>Contact:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if and .Enquiry.ContactFirstName.Valid .Enquiry.ContactLastName.Valid}}
|
||
|
|
<a href="/users/{{.Enquiry.ContactUserID}}">
|
||
|
|
{{.Enquiry.ContactFirstName.String}} {{.Enquiry.ContactLastName.String}}
|
||
|
|
</a>
|
||
|
|
{{else}}
|
||
|
|
-
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
{{if .Enquiry.ContactEmail.Valid}}
|
||
|
|
<tr>
|
||
|
|
<td><strong>Email:</strong></td>
|
||
|
|
<td>
|
||
|
|
<a href="mailto:{{.Enquiry.ContactEmail.String}}?subject={{.Enquiry.Title}}&bcc=carpis@cmctechnologies.com.au">
|
||
|
|
{{.Enquiry.ContactEmail.String}}
|
||
|
|
</a>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
{{end}}
|
||
|
|
<tr>
|
||
|
|
<td><strong>Phone:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if .Enquiry.ContactMobile.Valid}}
|
||
|
|
{{.Enquiry.ContactMobile.String}}
|
||
|
|
{{else if .Enquiry.ContactDirectPhone.Valid}}
|
||
|
|
{{.Enquiry.ContactDirectPhone.String}}
|
||
|
|
{{else if .Enquiry.ContactPhone.Valid}}
|
||
|
|
{{.Enquiry.ContactPhone.String}}
|
||
|
|
{{if .Enquiry.ContactPhoneExtension.Valid}}
|
||
|
|
ext:{{.Enquiry.ContactPhoneExtension.String}}
|
||
|
|
{{end}}
|
||
|
|
{{else}}
|
||
|
|
-
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Principle Information -->
|
||
|
|
<div class="card mt-4">
|
||
|
|
<header class="card-header">
|
||
|
|
<p class="card-header-title">Principle (Supplier)</p>
|
||
|
|
</header>
|
||
|
|
<div class="card-content">
|
||
|
|
<div class="content">
|
||
|
|
{{if .Enquiry.PrincipleName.Valid}}
|
||
|
|
<h6 class="subtitle is-6">
|
||
|
|
<a href="/principles/{{.Enquiry.PrincipleID}}">
|
||
|
|
{{if .Enquiry.PrincipleShortName.Valid}}
|
||
|
|
{{.Enquiry.PrincipleShortName.String}}
|
||
|
|
{{else}}
|
||
|
|
{{.Enquiry.PrincipleName.String}}
|
||
|
|
{{end}}
|
||
|
|
</a>
|
||
|
|
</h6>
|
||
|
|
{{if and .Enquiry.PrincipleShortName.Valid .Enquiry.PrincipleName.Valid}}
|
||
|
|
<p class="is-size-7">{{.Enquiry.PrincipleName.String}}</p>
|
||
|
|
{{end}}
|
||
|
|
<p class="is-size-7">Code: {{.Enquiry.PrincipleCode}}</p>
|
||
|
|
{{end}}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Location Information -->
|
||
|
|
<div class="card mt-4">
|
||
|
|
<header class="card-header">
|
||
|
|
<p class="card-header-title">Location</p>
|
||
|
|
</header>
|
||
|
|
<div class="card-content">
|
||
|
|
<div class="content">
|
||
|
|
<table class="table is-fullwidth">
|
||
|
|
<tbody>
|
||
|
|
<tr>
|
||
|
|
<td><strong>State:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if .Enquiry.StateName.Valid}}
|
||
|
|
{{.Enquiry.StateName.String}}
|
||
|
|
{{else}}
|
||
|
|
-
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td><strong>Country:</strong></td>
|
||
|
|
<td>
|
||
|
|
{{if .Enquiry.CountryName.Valid}}
|
||
|
|
{{.Enquiry.CountryName.String}}
|
||
|
|
{{else}}
|
||
|
|
-
|
||
|
|
{{end}}
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Actions -->
|
||
|
|
<div class="card mt-4">
|
||
|
|
<header class="card-header">
|
||
|
|
<p class="card-header-title">Actions</p>
|
||
|
|
</header>
|
||
|
|
<div class="card-content">
|
||
|
|
<div class="content">
|
||
|
|
<div class="buttons">
|
||
|
|
{{if not .Enquiry.Submitted.Valid}}
|
||
|
|
<button
|
||
|
|
class="button is-success is-fullwidth"
|
||
|
|
hx-put="/api/v1/enquiries/{{.Enquiry.ID}}/mark-submitted"
|
||
|
|
hx-confirm="Mark this enquiry as submitted today?"
|
||
|
|
hx-target="#main-content"
|
||
|
|
hx-swap="outerHTML">
|
||
|
|
Mark as Submitted
|
||
|
|
</button>
|
||
|
|
{{end}}
|
||
|
|
|
||
|
|
{{if .Enquiry.Archived}}
|
||
|
|
<button
|
||
|
|
class="button is-info is-fullwidth"
|
||
|
|
hx-put="/api/v1/enquiries/{{.Enquiry.ID}}/undelete"
|
||
|
|
hx-confirm="Undelete this enquiry?"
|
||
|
|
hx-target="#main-content"
|
||
|
|
hx-swap="outerHTML">
|
||
|
|
Undelete Enquiry
|
||
|
|
</button>
|
||
|
|
{{else}}
|
||
|
|
<button
|
||
|
|
class="button is-danger is-fullwidth"
|
||
|
|
hx-delete="/api/v1/enquiries/{{.Enquiry.ID}}"
|
||
|
|
hx-confirm="Are you sure you want to delete this enquiry?"
|
||
|
|
hx-target="#main-content"
|
||
|
|
hx-swap="outerHTML">
|
||
|
|
Delete Enquiry
|
||
|
|
</button>
|
||
|
|
{{end}}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
{{end}}
|
||
|
|
|
||
|
|
{{define "scripts"}}
|
||
|
|
<script>
|
||
|
|
// Handle action responses
|
||
|
|
document.addEventListener('htmx:afterSwap', function(evt) {
|
||
|
|
if (evt.detail.xhr.status === 204) {
|
||
|
|
// For delete/undelete actions, redirect to enquiries list
|
||
|
|
window.location.href = '/enquiries';
|
||
|
|
}
|
||
|
|
});
|
||
|
|
</script>
|
||
|
|
{{end}}
|