feat: billing for groups of deals
This commit is contained in:
@@ -25,6 +25,7 @@ export type { BaseEnumListSchema } from './models/BaseEnumListSchema';
|
|||||||
export type { BaseEnumSchema } from './models/BaseEnumSchema';
|
export type { BaseEnumSchema } from './models/BaseEnumSchema';
|
||||||
export type { BaseMarketplaceSchema } from './models/BaseMarketplaceSchema';
|
export type { BaseMarketplaceSchema } from './models/BaseMarketplaceSchema';
|
||||||
export type { BaseShippingWarehouseSchema } from './models/BaseShippingWarehouseSchema';
|
export type { BaseShippingWarehouseSchema } from './models/BaseShippingWarehouseSchema';
|
||||||
|
export type { BillPaymentInfo } from './models/BillPaymentInfo';
|
||||||
export type { BillPaymentStatus } from './models/BillPaymentStatus';
|
export type { BillPaymentStatus } from './models/BillPaymentStatus';
|
||||||
export type { BillStatusUpdateRequest } from './models/BillStatusUpdateRequest';
|
export type { BillStatusUpdateRequest } from './models/BillStatusUpdateRequest';
|
||||||
export type { Body_upload_product_barcode_image } from './models/Body_upload_product_barcode_image';
|
export type { Body_upload_product_barcode_image } from './models/Body_upload_product_barcode_image';
|
||||||
@@ -169,6 +170,7 @@ export type { GetProductBarcodeResponse } from './models/GetProductBarcodeRespon
|
|||||||
export type { GetServiceKitSchema } from './models/GetServiceKitSchema';
|
export type { GetServiceKitSchema } from './models/GetServiceKitSchema';
|
||||||
export type { GetTimeTrackingRecordsRequest } from './models/GetTimeTrackingRecordsRequest';
|
export type { GetTimeTrackingRecordsRequest } from './models/GetTimeTrackingRecordsRequest';
|
||||||
export type { GetTimeTrackingRecordsResponse } from './models/GetTimeTrackingRecordsResponse';
|
export type { GetTimeTrackingRecordsResponse } from './models/GetTimeTrackingRecordsResponse';
|
||||||
|
export type { GroupBillRequestSchema } from './models/GroupBillRequestSchema';
|
||||||
export type { HTTPValidationError } from './models/HTTPValidationError';
|
export type { HTTPValidationError } from './models/HTTPValidationError';
|
||||||
export type { MarketplaceCreateSchema } from './models/MarketplaceCreateSchema';
|
export type { MarketplaceCreateSchema } from './models/MarketplaceCreateSchema';
|
||||||
export type { MarketplaceSchema } from './models/MarketplaceSchema';
|
export type { MarketplaceSchema } from './models/MarketplaceSchema';
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
import type { BillPaymentStatus } from './BillPaymentStatus';
|
import type { BillPaymentStatus } from './BillPaymentStatus';
|
||||||
import type { NotificationChannel } from './NotificationChannel';
|
import type { NotificationChannel } from './NotificationChannel';
|
||||||
export type BillStatusUpdateRequest = {
|
export type BillStatusUpdateRequest = {
|
||||||
listenerTransactionId: number;
|
listenerTransactionId: (number | string);
|
||||||
channel: NotificationChannel;
|
channel: NotificationChannel;
|
||||||
info: BillPaymentStatus;
|
info: BillPaymentStatus;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
/* istanbul ignore file */
|
/* istanbul ignore file */
|
||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
|
import type { GroupBillRequestSchema } from './GroupBillRequestSchema';
|
||||||
export type DealGroupSchema = {
|
export type DealGroupSchema = {
|
||||||
id: number;
|
id: number;
|
||||||
name?: (string | null);
|
name?: (string | null);
|
||||||
lexorank: string;
|
lexorank: string;
|
||||||
|
billRequest?: (GroupBillRequestSchema | null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
import type { ClientSchema } from './ClientSchema';
|
import type { ClientSchema } from './ClientSchema';
|
||||||
import type { DealBillRequestSchema } from './DealBillRequestSchema';
|
import type { DealBillRequestSchema } from './DealBillRequestSchema';
|
||||||
|
import type { DealGroupSchema } from './DealGroupSchema';
|
||||||
import type { DealProductSchema } from './DealProductSchema';
|
import type { DealProductSchema } from './DealProductSchema';
|
||||||
import type { DealServiceSchema } from './DealServiceSchema';
|
import type { DealServiceSchema } from './DealServiceSchema';
|
||||||
import type { DealStatusHistorySchema } from './DealStatusHistorySchema';
|
import type { DealStatusHistorySchema } from './DealStatusHistorySchema';
|
||||||
@@ -26,6 +27,7 @@ export type DealSchema = {
|
|||||||
shippingWarehouse?: (ShippingWarehouseSchema | string | null);
|
shippingWarehouse?: (ShippingWarehouseSchema | string | null);
|
||||||
billRequest?: (DealBillRequestSchema | null);
|
billRequest?: (DealBillRequestSchema | null);
|
||||||
category?: (ServicePriceCategorySchema | null);
|
category?: (ServicePriceCategorySchema | null);
|
||||||
|
group?: (DealGroupSchema | null);
|
||||||
deliveryDate?: (string | null);
|
deliveryDate?: (string | null);
|
||||||
receivingSlotDate?: (string | null);
|
receivingSlotDate?: (string | null);
|
||||||
};
|
};
|
||||||
|
|||||||
12
src/client/models/GroupBillRequestSchema.ts
Normal file
12
src/client/models/GroupBillRequestSchema.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/* generated using openapi-typescript-codegen -- do not edit */
|
||||||
|
/* istanbul ignore file */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
export type GroupBillRequestSchema = {
|
||||||
|
groupId: number;
|
||||||
|
createdAt: string;
|
||||||
|
paid: boolean;
|
||||||
|
pdfUrl: (string | null);
|
||||||
|
invoiceNumber: (string | null);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -66,6 +66,9 @@ const DealSummaryCard: FC<Props> = ({ dealSummary, color }) => {
|
|||||||
}
|
}
|
||||||
return { disabled: true };
|
return { disabled: true };
|
||||||
};
|
};
|
||||||
|
const isPaid = () => {
|
||||||
|
return dealSummary.billRequest?.paid || dealSummary.group?.billRequest?.paid;
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Indicator
|
<Indicator
|
||||||
position={"top-end"}
|
position={"top-end"}
|
||||||
@@ -194,15 +197,12 @@ const DealSummaryCard: FC<Props> = ({ dealSummary, color }) => {
|
|||||||
</Popover>
|
</Popover>
|
||||||
)}
|
)}
|
||||||
</CopyButton>
|
</CopyButton>
|
||||||
{dealSummary.billRequest?.paid && (
|
{isPaid() && (
|
||||||
<Tooltip label={"Оплачен"}>
|
<Tooltip label={"Оплачен"}>
|
||||||
<ThemeIcon variant={"transparent"}>
|
<ThemeIcon variant={"transparent"}>
|
||||||
<IconCheck />
|
<IconCheck />
|
||||||
</ThemeIcon>
|
</ThemeIcon>
|
||||||
|
|
||||||
|
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
)}
|
)}
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
|
|||||||
@@ -121,6 +121,8 @@ const Content: FC<Props> = ({ deal }) => {
|
|||||||
clipboard.copy(`${window.location.origin}/${url}`);
|
clipboard.copy(`${window.location.origin}/${url}`);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const billRequestPdfUrl = deal?.billRequest?.pdfUrl || deal?.group?.billRequest?.pdfUrl;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={form.onSubmit(values => handleSubmit(values))}>
|
<form onSubmit={form.onSubmit(values => handleSubmit(values))}>
|
||||||
<Flex
|
<Flex
|
||||||
@@ -270,12 +272,12 @@ const Content: FC<Props> = ({ deal }) => {
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
<Flex gap={rem(10)}>
|
<Flex gap={rem(10)}>
|
||||||
{deal.billRequest && deal.billRequest.pdfUrl ? (
|
{billRequestPdfUrl ? (
|
||||||
<ButtonCopy
|
<ButtonCopy
|
||||||
onCopiedLabel={
|
onCopiedLabel={
|
||||||
"Ссылка скопирована в буфер обмена"
|
"Ссылка скопирована в буфер обмена"
|
||||||
}
|
}
|
||||||
value={deal.billRequest.pdfUrl}>
|
value={billRequestPdfUrl}>
|
||||||
Ссылка на оплату
|
Ссылка на оплату
|
||||||
</ButtonCopy>
|
</ButtonCopy>
|
||||||
) : (
|
) : (
|
||||||
@@ -308,7 +310,7 @@ const Content: FC<Props> = ({ deal }) => {
|
|||||||
<Flex gap={rem(10)}>
|
<Flex gap={rem(10)}>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
label={"Оплачен"}
|
label={"Оплачен"}
|
||||||
checked={deal.billRequest?.paid || false}
|
checked={deal.billRequest?.paid || deal.group?.billRequest?.paid || false}
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import classNames from "classnames";
|
|||||||
const ProductAndServiceTab: FC = () => {
|
const ProductAndServiceTab: FC = () => {
|
||||||
const { dealState, dealServicesState, dealProductsState } =
|
const { dealState, dealServicesState, dealProductsState } =
|
||||||
useDealProductAndServiceTabState();
|
useDealProductAndServiceTabState();
|
||||||
const isLocked = Boolean(dealState.deal?.billRequest);
|
const isLocked = Boolean(dealState.deal?.billRequest || dealState.deal?.group?.billRequest);
|
||||||
const onAddProductClick = () => {
|
const onAddProductClick = () => {
|
||||||
if (!dealProductsState.onCreate || !dealState.deal) return;
|
if (!dealProductsState.onCreate || !dealState.deal) return;
|
||||||
const productIds = dealState.deal.products.map(
|
const productIds = dealState.deal.products.map(
|
||||||
|
|||||||
Reference in New Issue
Block a user