use serde::{Deserialize, Serialize};
mod build_item;
mod totals;
mod types_advalorem;
mod types_mono;
mod types_special;
pub use build_item::build_ibs_cbs_xml;
pub use totals::*;
pub use types_advalorem::*;
pub use types_mono::*;
pub use types_special::*;
#[cfg(test)]
mod tests;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "ts", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts", ts(export))]
#[non_exhaustive]
pub struct IbsCbsData {
pub cst: String,
pub c_class_trib: String,
pub ind_doacao: bool,
pub g_ibs_cbs: Option<GIbsCbsData>,
pub g_trib_regular: Option<GTribRegularData>,
pub g_trib_compra_gov: Option<GTribCompraGovData>,
pub g_ibs_cbs_mono: Option<GIbsCbsMonoData>,
pub g_transf_cred: Option<GTransfCredData>,
pub g_cred_pres_ibs_zfm: Option<GCredPresIbsZfmData>,
pub g_ajuste_compet: Option<GAjusteCompetData>,
pub g_estorno_cred: Option<GEstornoCredData>,
pub g_cred_pres_oper: Option<GCredPresOperData>,
}
impl IbsCbsData {
pub fn new(cst: impl Into<String>, c_class_trib: impl Into<String>) -> Self {
Self {
cst: cst.into(),
c_class_trib: c_class_trib.into(),
..Default::default()
}
}
pub fn ind_doacao(mut self, v: bool) -> Self {
self.ind_doacao = v;
self
}
pub fn g_ibs_cbs(mut self, v: GIbsCbsData) -> Self {
self.g_ibs_cbs = Some(v);
self
}
pub fn g_trib_regular(mut self, v: GTribRegularData) -> Self {
self.g_trib_regular = Some(v);
self
}
pub fn g_trib_compra_gov(mut self, v: GTribCompraGovData) -> Self {
self.g_trib_compra_gov = Some(v);
self
}
pub fn g_ibs_cbs_mono(mut self, v: GIbsCbsMonoData) -> Self {
self.g_ibs_cbs_mono = Some(v);
self
}
pub fn g_transf_cred(mut self, v: GTransfCredData) -> Self {
self.g_transf_cred = Some(v);
self
}
pub fn g_cred_pres_ibs_zfm(mut self, v: GCredPresIbsZfmData) -> Self {
self.g_cred_pres_ibs_zfm = Some(v);
self
}
pub fn g_ajuste_compet(mut self, v: GAjusteCompetData) -> Self {
self.g_ajuste_compet = Some(v);
self
}
pub fn g_estorno_cred(mut self, v: GEstornoCredData) -> Self {
self.g_estorno_cred = Some(v);
self
}
pub fn g_cred_pres_oper(mut self, v: GCredPresOperData) -> Self {
self.g_cred_pres_oper = Some(v);
self
}
}