added invoices and status in cockpit, created info button for contract status types
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import axios from 'axios';
|
||||
import type { ApiResponse, Customer, Contract, ContractTask, ContractTaskSubtask, ContractTaskStatus, SalesPlatform, CancellationPeriod, ContractDuration, ContractCategory, Provider, Tariff, User, Address, BankCard, IdentityDocument, Meter, MeterReading, Role, PortalSettings, CustomerRepresentative, CustomerSummary } from '../types';
|
||||
import type { ApiResponse, Customer, Contract, ContractTask, ContractTaskSubtask, ContractTaskStatus, SalesPlatform, CancellationPeriod, ContractDuration, ContractCategory, Provider, Tariff, User, Address, BankCard, IdentityDocument, Meter, MeterReading, Invoice, Role, PortalSettings, CustomerRepresentative, CustomerSummary } from '../types';
|
||||
|
||||
const api = axios.create({
|
||||
baseURL: '/api',
|
||||
@@ -208,6 +208,40 @@ export const meterApi = {
|
||||
},
|
||||
};
|
||||
|
||||
// Invoice API
|
||||
export const invoiceApi = {
|
||||
getInvoices: async (ecdId: number) => {
|
||||
const res = await api.get<ApiResponse<Invoice[]>>(`/energy-details/${ecdId}/invoices`);
|
||||
return res.data;
|
||||
},
|
||||
addInvoice: async (ecdId: number, data: Partial<Invoice>) => {
|
||||
const res = await api.post<ApiResponse<Invoice>>(`/energy-details/${ecdId}/invoices`, data);
|
||||
return res.data;
|
||||
},
|
||||
updateInvoice: async (ecdId: number, invoiceId: number, data: Partial<Invoice>) => {
|
||||
const res = await api.put<ApiResponse<Invoice>>(`/energy-details/${ecdId}/invoices/${invoiceId}`, data);
|
||||
return res.data;
|
||||
},
|
||||
deleteInvoice: async (ecdId: number, invoiceId: number) => {
|
||||
const res = await api.delete<ApiResponse<void>>(`/energy-details/${ecdId}/invoices/${invoiceId}`);
|
||||
return res.data;
|
||||
},
|
||||
uploadDocument: async (invoiceId: number, file: File) => {
|
||||
const formData = new FormData();
|
||||
formData.append('document', file);
|
||||
const res = await api.post<ApiResponse<{ path: string; filename: string }>>(
|
||||
`/upload/invoices/${invoiceId}`,
|
||||
formData,
|
||||
{ headers: { 'Content-Type': 'multipart/form-data' } }
|
||||
);
|
||||
return res.data;
|
||||
},
|
||||
deleteDocument: async (invoiceId: number) => {
|
||||
const res = await api.delete<ApiResponse<void>>(`/upload/invoices/${invoiceId}`);
|
||||
return res.data;
|
||||
},
|
||||
};
|
||||
|
||||
// Stressfrei-Wechseln E-Mail-Adressen
|
||||
export interface StressfreiEmail {
|
||||
id: number;
|
||||
@@ -320,6 +354,8 @@ export interface AttachmentTargetsResponse {
|
||||
contract?: {
|
||||
id: number;
|
||||
contractNumber: string;
|
||||
type: string;
|
||||
energyDetailsId?: number;
|
||||
slots: AttachmentTargetSlot[];
|
||||
};
|
||||
}
|
||||
@@ -514,6 +550,23 @@ export const cachedEmailApi = {
|
||||
);
|
||||
return res.data;
|
||||
},
|
||||
// E-Mail als Rechnung speichern (für Energieverträge)
|
||||
saveEmailAsInvoice: async (emailId: number, params: { invoiceDate: string; invoiceType: string; notes?: string }) => {
|
||||
const res = await api.post<ApiResponse<{ id: number; invoiceDate: string; invoiceType: string; documentPath: string }>>(
|
||||
`/emails/${emailId}/save-as-invoice`,
|
||||
params
|
||||
);
|
||||
return res.data;
|
||||
},
|
||||
// Anhang als Rechnung speichern (für Energieverträge)
|
||||
saveAttachmentAsInvoice: async (emailId: number, filename: string, params: { invoiceDate: string; invoiceType: string; notes?: string }) => {
|
||||
const encodedFilename = encodeURIComponent(filename);
|
||||
const res = await api.post<ApiResponse<{ id: number; invoiceDate: string; invoiceType: string; documentPath: string }>>(
|
||||
`/emails/${emailId}/attachments/${encodedFilename}/save-as-invoice`,
|
||||
params
|
||||
);
|
||||
return res.data;
|
||||
},
|
||||
};
|
||||
|
||||
// Contracts - Vertragsbaum für Kundenansicht
|
||||
|
||||
Reference in New Issue
Block a user