use crate::com::{FromDispatchNew, SafeDispatch, SafeVariant};
use crate::errors::SageResult;
use windows::Win32::System::Com::IDispatch;
#[derive(Debug)]
pub struct Taxe {
pub dispatch: IDispatch,
}
impl Taxe {
fn dispatch(&self) -> SafeDispatch<'_> {
SafeDispatch::new(&self.dispatch)
}
pub fn ta_code(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("TA_Code", &[])?
.to_string()
}
pub fn ta_taux(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("TA_Taux", &[])?
.to_f64()
}
pub fn ta_intitule(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("TA_Intitule", &[])?
.to_string()
}
pub fn ta_type(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("TA_Type", &[])?
.to_i32()
}
pub fn ta_compte(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("TA_Compte", &[])?
.to_string()
}
pub fn ta_sens(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("TA_Sens", &[])?
.to_i32()
}
pub fn ta_provenance(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("TA_Provenance", &[])?
.to_i32()
}
pub fn ta_hors_taxe(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("TA_HorsTaxe", &[])?
.to_bool()
}
pub fn ta_npr(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("TA_NPR", &[])?
.to_bool()
}
pub fn ta_taux_npr(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("TA_TauxNPR", &[])?
.to_f64()
}
pub fn ta_compte_npr(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("TA_CompteNPR", &[])?
.to_string()
}
pub fn set_ta_code(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch().call_method_by_name("TA_Code", &[variant])?;
Ok(())
}
pub fn set_ta_taux(&mut self, value: f64) -> SageResult<()> {
let variant = SafeVariant::from_f64(value);
self.dispatch().call_method_by_name("TA_Taux", &[variant])?;
Ok(())
}
pub fn set_ta_intitule(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch()
.call_method_by_name("TA_Intitule", &[variant])?;
Ok(())
}
pub fn set_ta_type(&mut self, value: i32) -> SageResult<()> {
let variant = SafeVariant::from_i32(value);
self.dispatch().call_method_by_name("TA_Type", &[variant])?;
Ok(())
}
pub fn set_ta_compte(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch()
.call_method_by_name("TA_Compte", &[variant])?;
Ok(())
}
pub fn set_ta_sens(&mut self, value: i32) -> SageResult<()> {
let variant = SafeVariant::from_i32(value);
self.dispatch().call_method_by_name("TA_Sens", &[variant])?;
Ok(())
}
pub fn set_ta_provenance(&mut self, value: i32) -> SageResult<()> {
let variant = SafeVariant::from_i32(value);
self.dispatch()
.call_method_by_name("TA_Provenance", &[variant])?;
Ok(())
}
pub fn set_ta_hors_taxe(&self, hors_taxe: bool) -> SageResult<()> {
let hors_taxe_variant = SafeVariant::from_bool(hors_taxe);
self.dispatch()
.call_property_put("TA_HorsTaxe", &[hors_taxe_variant])?;
Ok(())
}
pub fn set_ta_npr(&self, npr: bool) -> SageResult<()> {
let npr_variant = SafeVariant::from_bool(npr);
self.dispatch()
.call_property_put("TA_NPR", &[npr_variant])?;
Ok(())
}
pub fn set_ta_taux_npr(&self, taux: f64) -> SageResult<()> {
let taux_variant = SafeVariant::R8(taux);
self.dispatch()
.call_property_put("TA_TauxNPR", &[taux_variant])?;
Ok(())
}
pub fn set_ta_compte_npr(&self, compte: &str) -> SageResult<()> {
let compte_variant = SafeVariant::from_string(compte);
self.dispatch()
.call_property_put("TA_CompteNPR", &[compte_variant])?;
Ok(())
}
pub fn is_persistant(&self) -> SageResult<bool> {
let result = self
.dispatch()
.call_method_by_name("IsPersistant", &[])?
.to_i32()?;
Ok(result != 0)
}
pub fn is_modified(&self) -> SageResult<bool> {
let result = self
.dispatch()
.call_method_by_name("IsModified", &[])?
.to_i32()?;
Ok(result != 0)
}
pub fn set_default(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("SetDefault", &[])?;
Ok(())
}
pub fn write(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("Write", &[])?;
Ok(())
}
pub fn write_default(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("WriteDefault", &[])?;
Ok(())
}
pub fn read(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("Read", &[])?;
Ok(())
}
pub fn remove(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("Remove", &[])?;
Ok(())
}
}
impl Clone for Taxe {
fn clone(&self) -> Self {
Self {
dispatch: self.dispatch.clone(),
}
}
}
impl PartialEq for Taxe {
fn eq(&self, other: &Self) -> bool {
match (self.ta_code(), other.ta_code()) {
(Ok(code1), Ok(code2)) => code1 == code2,
_ => false,
}
}
}
impl FromDispatchNew for Taxe {
fn from_dispatch_new(dispatch: IDispatch) -> SageResult<Self> {
Ok(Self { dispatch })
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_taxe_documentation() {
}
}