From 98fe855e654c2b8cfa158e5a15556b65c9b7e1df Mon Sep 17 00:00:00 2001 From: Edwin Eames Date: Tue, 9 Sep 2025 18:26:21 -0400 Subject: [PATCH] Updated charge close to working --- src/components/PaymentAuthorizePopup.vue | 2 +- src/layouts/sidebar/sidebar.vue | 15 + src/pages/delivery/create.vue | 92 +++- src/pages/delivery/edit.vue | 471 +++++++++++----- src/pages/delivery/home.vue | 7 +- .../update_tickets/finalize_ticket.vue | 19 +- src/pages/delivery/view.vue | 140 +++-- src/pages/pay/oil/authorize_preauthcharge.vue | 518 ++++++++++++++++++ src/pages/pay/{ => oil}/capture_authorize.vue | 192 ++++--- src/pages/pay/{ => oil}/pay_oil.vue | 50 +- src/pages/pay/routes.ts | 16 +- src/pages/pay/service/capture_authorize.vue | 344 ++++++++++++ src/pages/service/ServiceHome.vue | 13 +- src/pages/service/ServicePast.vue | 13 +- src/pages/service/ServiceToday.vue | 11 +- src/pages/transactions/authorize/index.vue | 238 ++++++++ src/pages/transactions/routes.ts | 11 + src/router/index.ts | 2 + src/stores/counts.ts | 3 + 19 files changed, 1785 insertions(+), 372 deletions(-) create mode 100644 src/pages/pay/oil/authorize_preauthcharge.vue rename src/pages/pay/{ => oil}/capture_authorize.vue (83%) rename src/pages/pay/{ => oil}/pay_oil.vue (92%) create mode 100644 src/pages/pay/service/capture_authorize.vue create mode 100644 src/pages/transactions/authorize/index.vue create mode 100644 src/pages/transactions/routes.ts diff --git a/src/components/PaymentAuthorizePopup.vue b/src/components/PaymentAuthorizePopup.vue index 495d528..32456b5 100644 --- a/src/components/PaymentAuthorizePopup.vue +++ b/src/components/PaymentAuthorizePopup.vue @@ -238,7 +238,7 @@ export default defineComponent({ console.log('Delivery ID:', this.delivery.id) console.log('Service ID:', this.delivery.service_id) console.log('Final payload being sent:', payload) - + console.log('Endpoint:', endpoint) const response = await axios.post( `${import.meta.env.VITE_AUTHORIZE_URL}/api/${endpoint}/?customer_id=${this.customer.id}`, payload, diff --git a/src/layouts/sidebar/sidebar.vue b/src/layouts/sidebar/sidebar.vue index debf96a..b5af29b 100755 --- a/src/layouts/sidebar/sidebar.vue +++ b/src/layouts/sidebar/sidebar.vue @@ -94,6 +94,21 @@ + +
  • +
    + Transactions +
      +
    • + + Authorize + {{ countsStore.transaction }} + +
    • +
    +
    +
  • +
  • diff --git a/src/pages/delivery/create.vue b/src/pages/delivery/create.vue index 093f670..a2ccc39 100755 --- a/src/pages/delivery/create.vue +++ b/src/pages/delivery/create.vue @@ -46,7 +46,7 @@ -
    +

    Create Delivery Order

    @@ -55,7 +55,12 @@
    - +
    Required unless "Fill" is checked. @@ -107,12 +112,9 @@
    - +
    + +
    You must select a credit card when choosing CC option. @@ -125,14 +127,23 @@
    - - - - + + + + + +
    Date is required.
    + +
    +
    + Optional +
    +
    +
    @@ -180,7 +191,7 @@ - + {{ tier.gallons }} ${{ Number(tier.price).toFixed(2) }} @@ -342,19 +353,19 @@ interface PricingTier { price: number | string; } interface DeliveryFormData { - gallons_ordered: string; - customer_asked_for_fill: boolean; - expected_delivery_date: string; - dispatcher_notes_taken: string; - prime: boolean; - emergency: boolean; - same_day: boolean; - credit: boolean; - cash: boolean; - check: boolean; - other: boolean; - credit_card_id: number; - promo_id: number; + gallons_ordered?: string; + customer_asked_for_fill?: boolean; + expected_delivery_date?: string; + dispatcher_notes_taken?: string; + prime?: boolean; + emergency?: boolean; + same_day?: boolean; + credit?: boolean; + cash?: boolean; + check?: boolean; + other?: boolean; + credit_card_id?: number; + promo_id?: number; } interface CardFormData { card_name: string; @@ -374,7 +385,7 @@ export default defineComponent({ return { v$: useValidate(), user: null as any, - quickGallonAmounts: [100, 125, 150, 200, 220], + quickGallonAmounts: [100, 125, 150, 175, 200, 220], userCards: [] as UserCard[], promos: [] as Promo[], truckDriversList: [] as Driver[], @@ -463,7 +474,11 @@ export default defineComponent({ return types[this.customer.customer_home_type] || 'Unknown type'; }, isAnyPaymentMethodSelected(): boolean { - return this.formDelivery.credit || this.formDelivery.cash || this.formDelivery.check || this.formDelivery.other; + return !!(this.formDelivery?.credit || this.formDelivery?.cash || this.formDelivery?.check || this.formDelivery?.other); + }, + selectedGallonsAmount(): number { + const value = this.formDelivery.gallons_ordered ?? ''; + return Number(value); } }, created() { @@ -488,11 +503,30 @@ export default defineComponent({ this.formDelivery.gallons_ordered = String(amount); this.formDelivery.customer_asked_for_fill = false; }, + selectCreditCard(cardId: number) { + this.formDelivery.credit_card_id = cardId; + }, setDeliveryDate(days: number) { const date = new Date(); date.setDate(date.getDate() + days); this.formDelivery.expected_delivery_date = date.toISOString().split('T')[0]; }, + isDeliveryDateSelected(days: number): boolean { + const date = new Date(); + date.setDate(date.getDate() + days); + return this.formDelivery.expected_delivery_date === date.toISOString().split('T')[0]; + }, + isPricingTierSelected(tierGallons: number | string): boolean { + if (!this.formDelivery.gallons_ordered) return false; + const selectedGallons = Number(this.formDelivery.gallons_ordered); + if (isNaN(selectedGallons)) return false; + + const tierNum = Number(tierGallons); + if (isNaN(tierNum)) return false; + + const shouldHighlight = selectedGallons === tierNum; + return shouldHighlight; + }, getPricingTiers() { let path = import.meta.env.VITE_BASE_URL + "/info/price/oil/tiers"; axios({ method: "get", url: path, withCredentials: true, headers: authHeader() }) diff --git a/src/pages/delivery/edit.vue b/src/pages/delivery/edit.vue index 8a36216..34fdf57 100755 --- a/src/pages/delivery/edit.vue +++ b/src/pages/delivery/edit.vue @@ -1,150 +1,240 @@ diff --git a/src/pages/service/ServiceHome.vue b/src/pages/service/ServiceHome.vue index 7f17b3e..fb9c888 100644 --- a/src/pages/service/ServiceHome.vue +++ b/src/pages/service/ServiceHome.vue @@ -38,18 +38,20 @@ + - + + - @@ -91,6 +94,7 @@

    {{ service.customer_name }}

    +

    ID: {{ service.id }}

    {{ service.customer_address }}, {{ service.customer_town }}

    @@ -116,8 +120,9 @@
    -
    +
    + Charge
    @@ -311,4 +316,4 @@ export default defineComponent({ } }, }) - \ No newline at end of file + diff --git a/src/pages/service/ServicePast.vue b/src/pages/service/ServicePast.vue index 4cd4fc4..40b0b4f 100644 --- a/src/pages/service/ServicePast.vue +++ b/src/pages/service/ServicePast.vue @@ -38,17 +38,19 @@
    ID Date / Time Customer Address Service Type DescriptionCostAmount Actions
    {{ service.id }}
    {{ formatDate(service.scheduled_date) }}
    {{ formatTime(service.scheduled_date) }}
    @@ -76,8 +78,9 @@
    {{ formatCurrency(service.service_cost) }} + + Charge
    + - + + - @@ -97,6 +100,7 @@

    {{ service.customer_name }}

    +

    ID: {{ service.id }}

    {{ service.customer_address }}, {{ service.customer_town }}

    @@ -122,8 +126,9 @@
    -
    +
    + Charge
    @@ -324,4 +329,4 @@ export default defineComponent({ } }, }) - \ No newline at end of file + diff --git a/src/pages/service/ServiceToday.vue b/src/pages/service/ServiceToday.vue index d4f3ff0..fbda3a9 100644 --- a/src/pages/service/ServiceToday.vue +++ b/src/pages/service/ServiceToday.vue @@ -38,17 +38,19 @@
    ID Date / Time Customer Address Service Type DescriptionCostAmount Actions
    {{ service.id }}
    {{ formatDate(service.scheduled_date) }}
    {{ formatTime(service.scheduled_date) }}
    @@ -82,8 +84,9 @@
    {{ formatCurrency(service.service_cost) }} + + Charge
    + - + + - @@ -97,6 +100,7 @@

    {{ service.customer_name }}

    +

    ID: {{ service.id }}

    {{ service.customer_address }}, {{ service.customer_town }}

    @@ -122,8 +126,9 @@
    -
    +
    + Charge
    diff --git a/src/pages/transactions/authorize/index.vue b/src/pages/transactions/authorize/index.vue new file mode 100644 index 0000000..5a55003 --- /dev/null +++ b/src/pages/transactions/authorize/index.vue @@ -0,0 +1,238 @@ + + + + + + diff --git a/src/pages/transactions/routes.ts b/src/pages/transactions/routes.ts new file mode 100644 index 0000000..f44ca46 --- /dev/null +++ b/src/pages/transactions/routes.ts @@ -0,0 +1,11 @@ +import AuthorizePage from './authorize/index.vue'; + +const transactionsRoutes = [ + { + path: '/transactions/authorize', + name: 'transactionsAuthorize', + component: AuthorizePage, + }, +]; + +export default transactionsRoutes; diff --git a/src/router/index.ts b/src/router/index.ts index 2bdecef..6c9450d 100755 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -12,6 +12,7 @@ import adminRoutes from "../pages/admin/routes.ts"; import tickerRoutes from "../pages/ticket/routes.ts"; import moneyRoutes from "../pages/money/routes.ts"; import serviceRoutes from "../pages/service/routes.ts"; +import transactionsRoutes from '../pages/transactions/routes.ts'; // Import your page components import Home from '../pages/Index.vue'; @@ -54,6 +55,7 @@ const routes = [ ...protectRoutes(autoRoutes), ...protectRoutes(adminRoutes), ...protectRoutes(serviceRoutes), + ...protectRoutes(transactionsRoutes), { path: '', diff --git a/src/stores/counts.ts b/src/stores/counts.ts index 13d5ef7..90e42c6 100644 --- a/src/stores/counts.ts +++ b/src/stores/counts.ts @@ -15,6 +15,7 @@ export const useCountsStore = defineStore('counts', () => { const automatic = ref(0) const upcoming_service = ref(0) const today_service = ref(0) + const transaction = ref(0) // --- ACTIONS --- // A single action to fetch ALL counts from our new, efficient endpoint. @@ -32,6 +33,7 @@ export const useCountsStore = defineStore('counts', () => { automatic.value = counts.automatic; upcoming_service.value = counts.upcoming_service; today_service.value = counts.today_service || 0; + transaction.value = counts.transaction || 0; } } catch { // No error param, as requested @@ -50,6 +52,7 @@ export const useCountsStore = defineStore('counts', () => { automatic, upcoming_service, today_service, + transaction, fetchSidebarCounts, } })
    ID Date / Time Customer Address Service Type DescriptionCostAmount Actions
    {{ service.id }}
    {{ formatDate(service.scheduled_date) }}
    {{ formatTime(service.scheduled_date) }}
    @@ -82,8 +84,9 @@
    {{ formatCurrency(service.service_cost) }} + + Charge