mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-29 04:31:08 -04:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			dependabot
			...
			fix-logout
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bdf8fa8b5a | |||
| ba298cdb0a | |||
| 05d5ce26fd | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -17,3 +17,4 @@ Homestead.yaml | |||||||
| /public/docs | /public/docs | ||||||
| /.scribe | /.scribe | ||||||
| !storage/fonts/.gitkeep | !storage/fonts/.gitkeep | ||||||
|  | .DS_Store | ||||||
|  | |||||||
| @ -27,6 +27,7 @@ return [ | |||||||
|             'tokenizer', |             'tokenizer', | ||||||
|             'JSON', |             'JSON', | ||||||
|             'cURL', |             'cURL', | ||||||
|  |             'zip', | ||||||
|         ], |         ], | ||||||
|         'apache' => [ |         'apache' => [ | ||||||
|             'mod_rewrite', |             'mod_rewrite', | ||||||
|  | |||||||
| @ -35,16 +35,7 @@ | |||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
|       <div |       <div | ||||||
|         class=" |         class="grid col-span-12 mt-6 text-center xl:mt-0 sm:grid-cols-4 xl:text-right xl:col-span-3 xl:grid-cols-1 xxl:col-span-2" | ||||||
|           grid |  | ||||||
|           col-span-12 |  | ||||||
|           mt-6 |  | ||||||
|           text-center |  | ||||||
|           xl:mt-0 |  | ||||||
|           sm:grid-cols-4 |  | ||||||
|           xl:text-right xl:col-span-3 xl:grid-cols-1 |  | ||||||
|           xxl:col-span-2 |  | ||||||
|         " |  | ||||||
|       > |       > | ||||||
|         <div class="px-6 py-2"> |         <div class="px-6 py-2"> | ||||||
|           <span class="text-xs leading-5 lg:text-sm"> |           <span class="text-xs leading-5 lg:text-sm"> | ||||||
| @ -177,10 +168,12 @@ const getChartInvoices = computed(() => { | |||||||
|   return [] |   return [] | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | const customerId = computed(() => route.params.id) | ||||||
|  |  | ||||||
| watch( | watch( | ||||||
|   route, |   () => customerId.value, | ||||||
|   () => { |   (id) => { | ||||||
|     if (route.params.id) { |     if (id && route.name === 'customers.view') { | ||||||
|       loadCustomer() |       loadCustomer() | ||||||
|     } |     } | ||||||
|     selectedYear.value = 'This year' |     selectedYear.value = 'This year' | ||||||
|  | |||||||
| @ -37,32 +37,10 @@ | |||||||
|  |  | ||||||
|     <!-- Sidebar --> |     <!-- Sidebar --> | ||||||
|     <div |     <div | ||||||
|       class=" |       class="fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block" | ||||||
|         fixed |  | ||||||
|         top-0 |  | ||||||
|         left-0 |  | ||||||
|         hidden |  | ||||||
|         h-full |  | ||||||
|         pt-16 |  | ||||||
|         pb-[6.4rem] |  | ||||||
|         ml-56 |  | ||||||
|         bg-white |  | ||||||
|         xl:ml-64 |  | ||||||
|         w-88 |  | ||||||
|         xl:block |  | ||||||
|       " |  | ||||||
|     > |     > | ||||||
|       <div |       <div | ||||||
|         class=" |         class="flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full" | ||||||
|           flex |  | ||||||
|           items-center |  | ||||||
|           justify-between |  | ||||||
|           px-4 |  | ||||||
|           pt-8 |  | ||||||
|           pb-2 |  | ||||||
|           border border-gray-200 border-solid |  | ||||||
|           height-full |  | ||||||
|         " |  | ||||||
|       > |       > | ||||||
|         <div class="mb-6"> |         <div class="mb-6"> | ||||||
|           <BaseInput |           <BaseInput | ||||||
| @ -92,14 +70,7 @@ | |||||||
|             </template> |             </template> | ||||||
|  |  | ||||||
|             <div |             <div | ||||||
|               class=" |               class="px-4 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid" | ||||||
|                 px-4 |  | ||||||
|                 py-1 |  | ||||||
|                 pb-2 |  | ||||||
|                 mb-1 mb-2 |  | ||||||
|                 text-sm |  | ||||||
|                 border-b border-gray-200 border-solid |  | ||||||
|               " |  | ||||||
|             > |             > | ||||||
|               {{ $t('general.sort_by') }} |               {{ $t('general.sort_by') }} | ||||||
|             </div> |             </div> | ||||||
| @ -156,12 +127,7 @@ | |||||||
|  |  | ||||||
|       <div |       <div | ||||||
|         ref="estimateListSection" |         ref="estimateListSection" | ||||||
|         class=" |         class="h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll" | ||||||
|           h-full |  | ||||||
|           overflow-y-scroll |  | ||||||
|           border-l border-gray-200 border-solid |  | ||||||
|           base-scroll |  | ||||||
|         " |  | ||||||
|       > |       > | ||||||
|         <div v-for="(estimate, index) in estimateList" :key="index"> |         <div v-for="(estimate, index) in estimateList" :key="index"> | ||||||
|           <router-link |           <router-link | ||||||
| @ -181,29 +147,11 @@ | |||||||
|               <BaseText |               <BaseText | ||||||
|                 :text="estimate.customer.name" |                 :text="estimate.customer.name" | ||||||
|                 :length="30" |                 :length="30" | ||||||
|                 class=" |                 class="pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate" | ||||||
|                   pr-2 |  | ||||||
|                   mb-2 |  | ||||||
|                   text-sm |  | ||||||
|                   not-italic |  | ||||||
|                   font-normal |  | ||||||
|                   leading-5 |  | ||||||
|                   text-black |  | ||||||
|                   capitalize |  | ||||||
|                   truncate |  | ||||||
|                 " |  | ||||||
|               /> |               /> | ||||||
|  |  | ||||||
|               <div |               <div | ||||||
|                 class=" |                 class="mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600" | ||||||
|                   mt-1 |  | ||||||
|                   mb-2 |  | ||||||
|                   text-xs |  | ||||||
|                   not-italic |  | ||||||
|                   font-medium |  | ||||||
|                   leading-5 |  | ||||||
|                   text-gray-600 |  | ||||||
|                 " |  | ||||||
|               > |               > | ||||||
|                 {{ estimate.estimate_number }} |                 {{ estimate.estimate_number }} | ||||||
|               </div> |               </div> | ||||||
| @ -220,26 +168,11 @@ | |||||||
|               <BaseFormatMoney |               <BaseFormatMoney | ||||||
|                 :amount="estimate.total" |                 :amount="estimate.total" | ||||||
|                 :currency="estimate.customer.currency" |                 :currency="estimate.customer.currency" | ||||||
|                 class=" |                 class="block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900" | ||||||
|                   block |  | ||||||
|                   mb-2 |  | ||||||
|                   text-xl |  | ||||||
|                   not-italic |  | ||||||
|                   font-semibold |  | ||||||
|                   leading-8 |  | ||||||
|                   text-right text-gray-900 |  | ||||||
|                 " |  | ||||||
|               /> |               /> | ||||||
|  |  | ||||||
|               <div |               <div | ||||||
|                 class=" |                 class="text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date" | ||||||
|                   text-sm |  | ||||||
|                   not-italic |  | ||||||
|                   font-normal |  | ||||||
|                   leading-5 |  | ||||||
|                   text-right text-gray-600 |  | ||||||
|                   est-date |  | ||||||
|                 " |  | ||||||
|               > |               > | ||||||
|                 {{ estimate.formatted_estimate_date }} |                 {{ estimate.formatted_estimate_date }} | ||||||
|               </div> |               </div> | ||||||
| @ -264,13 +197,7 @@ | |||||||
|     > |     > | ||||||
|       <iframe |       <iframe | ||||||
|         :src="`${shareableLink}`" |         :src="`${shareableLink}`" | ||||||
|         class=" |         class="flex-1 border border-gray-400 border-solid rounded-md bg-white frame-style" | ||||||
|           flex-1 |  | ||||||
|           border border-gray-400 border-solid |  | ||||||
|           rounded-md |  | ||||||
|           bg-white |  | ||||||
|           frame-style |  | ||||||
|         " |  | ||||||
|       /> |       /> | ||||||
|     </div> |     </div> | ||||||
|   </BasePage> |   </BasePage> | ||||||
| @ -345,11 +272,14 @@ const getCurrentEstimateId = computed(() => { | |||||||
|   return null |   return null | ||||||
| }) | }) | ||||||
|  |  | ||||||
| watch(route, (to, from) => { | const estimateId = computed(() => route.params.id) | ||||||
|   if (to.name === 'estimates.view') { |  | ||||||
|     loadEstimate() | watch( | ||||||
|  |   () => estimateId.value, | ||||||
|  |   (id) => { | ||||||
|  |     if (id && route.name === 'estimates.view') loadEstimate() | ||||||
|   } |   } | ||||||
| }) | ) | ||||||
|  |  | ||||||
| loadEstimates() | loadEstimates() | ||||||
| loadEstimate() | loadEstimate() | ||||||
|  | |||||||
| @ -65,11 +65,14 @@ const getCurrentInvoiceId = computed(() => { | |||||||
|   return null |   return null | ||||||
| }) | }) | ||||||
|  |  | ||||||
| watch(route, (to, from) => { | const invoiceId = computed(() => route.params.id) | ||||||
|   if (to.name === 'invoices.view') { |  | ||||||
|     loadInvoice() | watch( | ||||||
|  |   () => invoiceId.value, | ||||||
|  |   (id) => { | ||||||
|  |     if (id && route.name === 'invoices.view') loadInvoice() | ||||||
|   } |   } | ||||||
| }) | ) | ||||||
|  |  | ||||||
| async function onMarkAsSent() { | async function onMarkAsSent() { | ||||||
|   dialogStore |   dialogStore | ||||||
| @ -286,32 +289,10 @@ onSearched = debounce(onSearched, 500) | |||||||
|  |  | ||||||
|     <!-- sidebar --> |     <!-- sidebar --> | ||||||
|     <div |     <div | ||||||
|       class=" |       class="fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block" | ||||||
|         fixed |  | ||||||
|         top-0 |  | ||||||
|         left-0 |  | ||||||
|         hidden |  | ||||||
|         h-full |  | ||||||
|         pt-16 |  | ||||||
|         pb-[6.4rem] |  | ||||||
|         ml-56 |  | ||||||
|         bg-white |  | ||||||
|         xl:ml-64 |  | ||||||
|         w-88 |  | ||||||
|         xl:block |  | ||||||
|       " |  | ||||||
|     > |     > | ||||||
|       <div |       <div | ||||||
|         class=" |         class="flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full" | ||||||
|           flex |  | ||||||
|           items-center |  | ||||||
|           justify-between |  | ||||||
|           px-4 |  | ||||||
|           pt-8 |  | ||||||
|           pb-2 |  | ||||||
|           border border-gray-200 border-solid |  | ||||||
|           height-full |  | ||||||
|         " |  | ||||||
|       > |       > | ||||||
|         <div class="mb-6"> |         <div class="mb-6"> | ||||||
|           <BaseInput |           <BaseInput | ||||||
| @ -335,14 +316,7 @@ onSearched = debounce(onSearched, 500) | |||||||
|               </BaseButton> |               </BaseButton> | ||||||
|             </template> |             </template> | ||||||
|             <div |             <div | ||||||
|               class=" |               class="px-2 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid" | ||||||
|                 px-2 |  | ||||||
|                 py-1 |  | ||||||
|                 pb-2 |  | ||||||
|                 mb-1 mb-2 |  | ||||||
|                 text-sm |  | ||||||
|                 border-b border-gray-200 border-solid |  | ||||||
|               " |  | ||||||
|             > |             > | ||||||
|               {{ $t('general.sort_by') }} |               {{ $t('general.sort_by') }} | ||||||
|             </div> |             </div> | ||||||
| @ -399,12 +373,7 @@ onSearched = debounce(onSearched, 500) | |||||||
|  |  | ||||||
|       <div |       <div | ||||||
|         ref="invoiceListSection" |         ref="invoiceListSection" | ||||||
|         class=" |         class="h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll" | ||||||
|           h-full |  | ||||||
|           overflow-y-scroll |  | ||||||
|           border-l border-gray-200 border-solid |  | ||||||
|           base-scroll |  | ||||||
|         " |  | ||||||
|       > |       > | ||||||
|         <div v-for="(invoice, index) in invoiceList" :key="index"> |         <div v-for="(invoice, index) in invoiceList" :key="index"> | ||||||
|           <router-link |           <router-link | ||||||
| @ -424,29 +393,11 @@ onSearched = debounce(onSearched, 500) | |||||||
|               <BaseText |               <BaseText | ||||||
|                 :text="invoice.customer.name" |                 :text="invoice.customer.name" | ||||||
|                 :length="30" |                 :length="30" | ||||||
|                 class=" |                 class="pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate" | ||||||
|                   pr-2 |  | ||||||
|                   mb-2 |  | ||||||
|                   text-sm |  | ||||||
|                   not-italic |  | ||||||
|                   font-normal |  | ||||||
|                   leading-5 |  | ||||||
|                   text-black |  | ||||||
|                   capitalize |  | ||||||
|                   truncate |  | ||||||
|                 " |  | ||||||
|               /> |               /> | ||||||
|  |  | ||||||
|               <div |               <div | ||||||
|                 class=" |                 class="mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600" | ||||||
|                   mt-1 |  | ||||||
|                   mb-2 |  | ||||||
|                   text-xs |  | ||||||
|                   not-italic |  | ||||||
|                   font-medium |  | ||||||
|                   leading-5 |  | ||||||
|                   text-gray-600 |  | ||||||
|                 " |  | ||||||
|               > |               > | ||||||
|                 {{ invoice.invoice_number }} |                 {{ invoice.invoice_number }} | ||||||
|               </div> |               </div> | ||||||
| @ -460,27 +411,12 @@ onSearched = debounce(onSearched, 500) | |||||||
|  |  | ||||||
|             <div class="flex-1 whitespace-nowrap right"> |             <div class="flex-1 whitespace-nowrap right"> | ||||||
|               <BaseFormatMoney |               <BaseFormatMoney | ||||||
|                 class=" |                 class="mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block" | ||||||
|                   mb-2 |  | ||||||
|                   text-xl |  | ||||||
|                   not-italic |  | ||||||
|                   font-semibold |  | ||||||
|                   leading-8 |  | ||||||
|                   text-right text-gray-900 |  | ||||||
|                   block |  | ||||||
|                 " |  | ||||||
|                 :amount="invoice.total" |                 :amount="invoice.total" | ||||||
|                 :currency="invoice.customer.currency" |                 :currency="invoice.customer.currency" | ||||||
|               /> |               /> | ||||||
|               <div |               <div | ||||||
|                 class=" |                 class="text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date" | ||||||
|                   text-sm |  | ||||||
|                   not-italic |  | ||||||
|                   font-normal |  | ||||||
|                   leading-5 |  | ||||||
|                   text-right text-gray-600 |  | ||||||
|                   est-date |  | ||||||
|                 " |  | ||||||
|               > |               > | ||||||
|                 {{ invoice.formatted_invoice_date }} |                 {{ invoice.formatted_invoice_date }} | ||||||
|               </div> |               </div> | ||||||
| @ -505,13 +441,7 @@ onSearched = debounce(onSearched, 500) | |||||||
|     > |     > | ||||||
|       <iframe |       <iframe | ||||||
|         :src="`${shareableLink}`" |         :src="`${shareableLink}`" | ||||||
|         class=" |         class="flex-1 border border-gray-400 border-solid bg-white rounded-md frame-style" | ||||||
|           flex-1 |  | ||||||
|           border border-gray-400 border-solid |  | ||||||
|           bg-white |  | ||||||
|           rounded-md |  | ||||||
|           frame-style |  | ||||||
|         " |  | ||||||
|       /> |       /> | ||||||
|     </div> |     </div> | ||||||
|   </BasePage> |   </BasePage> | ||||||
|  | |||||||
| @ -22,31 +22,10 @@ | |||||||
|  |  | ||||||
|     <!-- Sidebar --> |     <!-- Sidebar --> | ||||||
|     <div |     <div | ||||||
|       class=" |       class="fixed top-0 left-0 hidden h-full pt-16 pb-[6rem] ml-56 bg-white xl:ml-64 w-88 xl:block" | ||||||
|         fixed |  | ||||||
|         top-0 |  | ||||||
|         left-0 |  | ||||||
|         hidden |  | ||||||
|         h-full |  | ||||||
|         pt-16 |  | ||||||
|         pb-[6rem] |  | ||||||
|         ml-56 |  | ||||||
|         bg-white |  | ||||||
|         xl:ml-64 |  | ||||||
|         w-88 |  | ||||||
|         xl:block |  | ||||||
|       " |  | ||||||
|     > |     > | ||||||
|       <div |       <div | ||||||
|         class=" |         class="flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid" | ||||||
|           flex |  | ||||||
|           items-center |  | ||||||
|           justify-between |  | ||||||
|           px-4 |  | ||||||
|           pt-8 |  | ||||||
|           pb-6 |  | ||||||
|           border border-gray-200 border-solid |  | ||||||
|         " |  | ||||||
|       > |       > | ||||||
|         <BaseInput |         <BaseInput | ||||||
|           v-model="searchData.searchText" |           v-model="searchData.searchText" | ||||||
| @ -70,14 +49,7 @@ | |||||||
|             </template> |             </template> | ||||||
|  |  | ||||||
|             <div |             <div | ||||||
|               class=" |               class="px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid" | ||||||
|                 px-4 |  | ||||||
|                 py-1 |  | ||||||
|                 pb-2 |  | ||||||
|                 mb-2 |  | ||||||
|                 text-sm |  | ||||||
|                 border-b border-gray-200 border-solid |  | ||||||
|               " |  | ||||||
|             > |             > | ||||||
|               {{ $t('general.sort_by') }} |               {{ $t('general.sort_by') }} | ||||||
|             </div> |             </div> | ||||||
| @ -159,43 +131,17 @@ | |||||||
|               <BaseText |               <BaseText | ||||||
|                 :text="payment?.customer?.name" |                 :text="payment?.customer?.name" | ||||||
|                 :length="30" |                 :length="30" | ||||||
|                 class=" |                 class="pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate" | ||||||
|                   pr-2 |  | ||||||
|                   mb-2 |  | ||||||
|                   text-sm |  | ||||||
|                   not-italic |  | ||||||
|                   font-normal |  | ||||||
|                   leading-5 |  | ||||||
|                   text-black |  | ||||||
|                   capitalize |  | ||||||
|                   truncate |  | ||||||
|                 " |  | ||||||
|               /> |               /> | ||||||
|  |  | ||||||
|               <div |               <div | ||||||
|                 class=" |                 class="mb-1 text-xs not-italic font-medium leading-5 text-gray-500 capitalize" | ||||||
|                   mb-1 |  | ||||||
|                   text-xs |  | ||||||
|                   not-italic |  | ||||||
|                   font-medium |  | ||||||
|                   leading-5 |  | ||||||
|                   text-gray-500 |  | ||||||
|                   capitalize |  | ||||||
|                 " |  | ||||||
|               > |               > | ||||||
|                 {{ payment?.payment_number }} |                 {{ payment?.payment_number }} | ||||||
|               </div> |               </div> | ||||||
|  |  | ||||||
|               <div |               <div | ||||||
|                 class=" |                 class="mb-1 text-xs not-italic font-medium leading-5 text-gray-500 capitalize" | ||||||
|                   mb-1 |  | ||||||
|                   text-xs |  | ||||||
|                   not-italic |  | ||||||
|                   font-medium |  | ||||||
|                   leading-5 |  | ||||||
|                   text-gray-500 |  | ||||||
|                   capitalize |  | ||||||
|                 " |  | ||||||
|               > |               > | ||||||
|                 {{ payment?.invoice_number }} |                 {{ payment?.invoice_number }} | ||||||
|               </div> |               </div> | ||||||
| @ -203,15 +149,7 @@ | |||||||
|  |  | ||||||
|             <div class="flex-1 whitespace-nowrap right"> |             <div class="flex-1 whitespace-nowrap right"> | ||||||
|               <BaseFormatMoney |               <BaseFormatMoney | ||||||
|                 class=" |                 class="block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900" | ||||||
|                   block |  | ||||||
|                   mb-2 |  | ||||||
|                   text-xl |  | ||||||
|                   not-italic |  | ||||||
|                   font-semibold |  | ||||||
|                   leading-8 |  | ||||||
|                   text-right text-gray-900 |  | ||||||
|                 " |  | ||||||
|                 :amount="payment?.amount" |                 :amount="payment?.amount" | ||||||
|                 :currency="payment.customer?.currency" |                 :currency="payment.customer?.currency" | ||||||
|               /> |               /> | ||||||
| @ -313,9 +251,14 @@ const paymentDate = computed(() => { | |||||||
|   ) |   ) | ||||||
| }) | }) | ||||||
|  |  | ||||||
| watch(route, () => { | const paymentId = computed(() => route.params.id) | ||||||
|   loadPayment() |  | ||||||
| }) | watch( | ||||||
|  |   () => paymentId.value, | ||||||
|  |   (id) => { | ||||||
|  |     if (id && route.name === 'payments.view') loadPayment() | ||||||
|  |   } | ||||||
|  | ) | ||||||
|  |  | ||||||
| loadPayments() | loadPayments() | ||||||
| loadPayment() | loadPayment() | ||||||
|  | |||||||
| @ -78,10 +78,12 @@ let isLoading = computed(() => { | |||||||
|   return recurringInvoiceStore.isFetchingViewData |   return recurringInvoiceStore.isFetchingViewData | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | const invoiceId = computed(() => route.params.id) | ||||||
|  |  | ||||||
| watch( | watch( | ||||||
|   route, |   () => invoiceId.value, | ||||||
|   () => { |   (id) => { | ||||||
|     if (route.params.id && route.name === 'recurring-invoices.view') { |     if (id && route.name === 'recurring-invoices.view') { | ||||||
|       loadRecurringInvoice() |       loadRecurringInvoice() | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	