paymentlib/dto/
invoice_request.rsuse chrono::naive::serde::ts_milliseconds;
use chrono::NaiveDateTime;
use common::enums::payment_gateway::PaymentGateway;
use common::utils::serialize_option_naive_date;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::dto::project_request::ProjectRequest;
use crate::jsonb::items::Items;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct InvoiceRequest {
pub id: Option<Uuid>,
pub ver: Option<i32>,
pub currency: String,
#[serde(with = "ts_milliseconds")]
pub issued_date: NaiveDateTime,
pub items: Option<Vec<Items>>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub due_date: Option<NaiveDateTime>,
pub number: Option<i32>,
pub amount: f64,
pub tax: f64,
pub issuer: Option<Uuid>,
pub issuer_org: Option<Uuid>,
pub attachments: Option<Vec<String>>,
pub card: Option<Uuid>,
pub user_id: Uuid,
pub payment_gateway: Option<PaymentGateway>,
pub project: Option<ProjectRequest>,
pub instant_payment: bool,
pub payment_plan: Option<Uuid>,
pub discounts_applied: Option<Vec<Uuid>>,
pub entity_id: Option<Uuid>,
pub payer: Option<Uuid>,
pub item_id: Option<Uuid>,
pub confirmation_status: Option<String>,
}