use crate::com::{FromDispatchNew, SafeDispatch, SafeVariant};
use crate::errors::SageResult;
use windows::Win32::System::Com::IDispatch;
#[derive(Debug)]
pub struct Devise {
pub dispatch: IDispatch,
}
impl Devise {
fn dispatch(&self) -> SafeDispatch<'_> {
SafeDispatch::new(&self.dispatch)
}
pub fn code(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("Code", &[])?
.to_string()
}
pub fn intitule(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("Intitule", &[])?
.to_string()
}
pub fn d_code_iso(&self) -> SageResult<String> {
self.code()
}
pub fn d_intitule(&self) -> SageResult<String> {
self.intitule()
}
pub fn d_symbole(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("D_Symbole", &[])?
.to_string()
}
pub fn d_format(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("D_Format", &[])?
.to_string()
}
pub fn d_cours(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("D_Cours", &[])?
.to_f64()
}
pub fn d_taux_achat(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("D_TauxAchat", &[])?
.to_f64()
}
pub fn d_taux_vente(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("D_TauxVente", &[])?
.to_f64()
}
pub fn d_decimale_qte(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("D_DecimaleQte", &[])?
.to_i32()
}
pub fn d_decimale_prix(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("D_DecimalePrix", &[])?
.to_i32()
}
pub fn d_cours_date(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("D_CoursDate", &[])?
.to_string()
}
pub fn d_type_cotation(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("D_TypeCotation", &[])?
.to_i32()
}
pub fn d_unite_cotation(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("D_UniteCotation", &[])?
.to_f64()
}
pub fn d_reference(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("D_Reference", &[])?
.to_bool()
}
pub fn set_code(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch().call_method_by_name("Code", &[variant])?;
Ok(())
}
pub fn set_intitule(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch()
.call_method_by_name("Intitule", &[variant])?;
Ok(())
}
pub fn set_d_symbole(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch()
.call_method_by_name("D_Symbole", &[variant])?;
Ok(())
}
pub fn set_d_format(&mut self, value: &str) -> SageResult<()> {
let variant = SafeVariant::from_string(value);
self.dispatch()
.call_method_by_name("D_Format", &[variant])?;
Ok(())
}
pub fn set_d_cours(&mut self, value: f64) -> SageResult<()> {
let variant = SafeVariant::from_f64(value);
self.dispatch().call_method_by_name("D_Cours", &[variant])?;
Ok(())
}
pub fn set_d_taux_achat(&mut self, value: f64) -> SageResult<()> {
let variant = SafeVariant::from_f64(value);
self.dispatch()
.call_method_by_name("D_TauxAchat", &[variant])?;
Ok(())
}
pub fn set_d_taux_vente(&mut self, value: f64) -> SageResult<()> {
let variant = SafeVariant::from_f64(value);
self.dispatch()
.call_method_by_name("D_TauxVente", &[variant])?;
Ok(())
}
pub fn set_d_decimale_qte(&mut self, value: i32) -> SageResult<()> {
let variant = SafeVariant::from_i32(value);
self.dispatch()
.call_method_by_name("D_DecimaleQte", &[variant])?;
Ok(())
}
pub fn set_d_decimale_prix(&mut self, value: i32) -> SageResult<()> {
let variant = SafeVariant::from_i32(value);
self.dispatch()
.call_method_by_name("D_DecimalePrix", &[variant])?;
Ok(())
}
pub fn set_d_type_cotation(&mut self, value: i32) -> SageResult<()> {
let variant = SafeVariant::from_i32(value);
self.dispatch()
.call_method_by_name("D_TypeCotation", &[variant])?;
Ok(())
}
pub fn set_d_unite_cotation(&mut self, value: f64) -> SageResult<()> {
let variant = SafeVariant::from_f64(value);
self.dispatch()
.call_method_by_name("D_UniteCotation", &[variant])?;
Ok(())
}
pub fn set_d_cours_date(&self, date: &str) -> SageResult<()> {
let date_variant = SafeVariant::from_string(date);
self.dispatch()
.call_property_put("D_CoursDate", &[date_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 Devise {
fn clone(&self) -> Self {
Self {
dispatch: self.dispatch.clone(),
}
}
}
impl PartialEq for Devise {
fn eq(&self, other: &Self) -> bool {
match (self.code(), other.code()) {
(Ok(code1), Ok(code2)) => code1 == code2,
_ => false,
}
}
}
impl FromDispatchNew for Devise {
fn from_dispatch_new(dispatch: IDispatch) -> SageResult<Self> {
Ok(Self { dispatch })
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_devise_documentation() {
}
}