timesheetlib/dto/
payslip_request.rsuse serde::{Deserialize, Serialize};
use uuid::Uuid;
use chrono::NaiveDateTime;
use common::utils::serialize_option_naive_date;
use crate::enums::payment_type::PaymentType;
use crate::enums::payslip_status::PayslipStatus;
use crate::jsonb::bonus::Bonus;
use crate::jsonb::deduction::Deduction;
use crate::jsonb::payment::Payment;
use crate::jsonb::payslip_entry::PayslipEntry;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct PayslipRequest {
pub id: Option<Uuid>,
pub user_id: Uuid,
pub period_id: Uuid,
pub leave_id: Option<Uuid>,
pub hours_claimed: f32,
pub hours_approved: f32,
pub rate: f32,
pub entrys: Option<Vec<PayslipEntry>>,
pub amount_claimed: f32,
pub amount_approved: f32,
pub taxable: f32,
pub tax: f32,
pub accrual: f32,
pub bonuses: Option<Vec<Bonus>>,
pub amount_paid: Option<f32>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_date: Option<NaiveDateTime>,
pub payments: Option<Vec<Payment>>,
pub payment_type: Option<PaymentType>,
pub comment: Option<String>,
pub status: Option<PayslipStatus>,
pub org_id : Uuid,
pub entry : Uuid,
pub deductions: Option<Vec<Deduction>>,
}