use crate::com::{FromDispatchNew, SafeDispatch, SafeVariant};
use crate::errors::SageResult;
use windows::Win32::System::Com::IDispatch;
#[derive(Debug)]
pub struct Tiers {
pub dispatch: IDispatch,
}
impl Tiers {
fn dispatch(&self) -> SafeDispatch<'_> {
SafeDispatch::new(&self.dispatch)
}
pub fn instance(&self) -> &IDispatch {
&self.dispatch
}
pub fn ct_num(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Num", &[])?
.to_string()
}
pub fn ct_intitule(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Intitule", &[])?
.to_string()
}
pub fn ct_type(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_Type", &[])?
.to_i32()
}
pub fn ct_qualite(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Qualite", &[])?
.to_string()
}
pub fn ct_classement(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Classement", &[])?
.to_string()
}
pub fn ct_commentaire(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Commentaire", &[])?
.to_string()
}
pub fn ct_identifiant(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Identifiant", &[])?
.to_string()
}
pub fn ct_siret(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Siret", &[])?
.to_string()
}
pub fn ct_ape(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_Ape", &[])?
.to_string()
}
pub fn ct_date_create(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_DateCreate", &[])?
.to_string()
}
pub fn ct_sommeil(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("CT_Sommeil", &[])?
.to_bool()
}
pub fn adresse_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("Adresse", &[])
}
pub fn ct_compte_collectif(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("CT_CompteCollectif", &[])?
.to_string()
}
pub fn ct_periode(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_Periode", &[])?
.to_i32()
}
pub fn ct_solde(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("CT_Solde", &[])?
.to_f64()
}
pub fn ct_encours(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("CT_Encours", &[])?
.to_f64()
}
pub fn ct_assurance(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("CT_Assurance", &[])?
.to_f64()
}
pub fn ct_condition_reglement(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_ConditionReglement", &[])?
.to_i32()
}
pub fn ct_nb_jour(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_NbJour", &[])?
.to_i32()
}
pub fn ct_jour_reglement(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_JourReglement", &[])?
.to_i32()
}
pub fn ct_jour_net(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_JourNet", &[])?
.to_i32()
}
pub fn ct_condition_reglement_le(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_ConditionReglementLe", &[])?
.to_i32()
}
pub fn ct_taux_escompte(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("CT_TauxEscompte", &[])?
.to_f64()
}
pub fn ct_taux_retard(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("CT_TauxRetard", &[])?
.to_f64()
}
pub fn ct_taux_risque(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("CT_TauxRisque", &[])?
.to_f64()
}
pub fn ct_tva_encaissement(&self) -> SageResult<bool> {
self.dispatch()
.call_method_by_name("CT_TvaEncaissement", &[])?
.to_bool()
}
pub fn ct_tva_regime(&self) -> SageResult<i32> {
self.dispatch()
.call_method_by_name("CT_TvaRegime", &[])?
.to_i32()
}
pub fn tiers_payeur_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("TiersPayeur", &[])
}
pub fn devise_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("Devise", &[])
}
pub fn categorie_comptable_raw(&self) -> SageResult<SafeVariant> {
self.dispatch()
.call_method_by_name("CategorieComptable", &[])
}
pub fn reglement_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("Reglement", &[])
}
pub fn banque_principale_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("BanquePrincipale", &[])
}
pub fn transporteur_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("Transporteur", &[])
}
pub fn representant_raw(&self) -> SageResult<SafeVariant> {
self.dispatch().call_method_by_name("Representant", &[])
}
pub fn ca_periode(&self, date_debut: &str, date_fin: &str) -> SageResult<f64> {
let debut = SafeVariant::from_string(date_debut);
let fin = SafeVariant::from_string(date_fin);
self.dispatch()
.call_method_by_name("CAPeriode", &[debut, fin])?
.to_f64()
}
pub fn ca_n(&self) -> SageResult<f64> {
self.dispatch().call_method_by_name("CA_N", &[])?.to_f64()
}
pub fn ca_n_1(&self) -> SageResult<f64> {
self.dispatch().call_method_by_name("CA_N_1", &[])?.to_f64()
}
pub fn ca_n_2(&self) -> SageResult<f64> {
self.dispatch().call_method_by_name("CA_N_2", &[])?.to_f64()
}
pub fn solde_jour_j(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("SoldeJourJ", &[])?
.to_f64()
}
pub fn solde_echu(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("SoldeEchu", &[])?
.to_f64()
}
pub fn solde_non_echu(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("SoldeNonEchu", &[])?
.to_f64()
}
pub fn encours(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("Encours", &[])?
.to_f64()
}
pub fn encours_devise(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("EncoursDevise", &[])?
.to_f64()
}
pub fn date_dernier_reglement(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("DateDernierReglement", &[])?
.to_string()
}
pub fn montant_dernier_reglement(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("MontantDernierReglement", &[])?
.to_f64()
}
pub fn date_derniere_facture(&self) -> SageResult<String> {
self.dispatch()
.call_method_by_name("DateDerniereFacture", &[])?
.to_string()
}
pub fn montant_derniere_facture(&self) -> SageResult<f64> {
self.dispatch()
.call_method_by_name("MontantDerniereFacture", &[])?
.to_f64()
}
pub fn set_ct_num(&self, numero: &str) -> SageResult<()> {
let numero_variant = SafeVariant::from_string(numero);
self.dispatch()
.call_property_put("CT_Num", &[numero_variant])?;
Ok(())
}
pub fn set_ct_intitule(&self, intitule: &str) -> SageResult<()> {
let intitule_variant = SafeVariant::from_string(intitule);
self.dispatch()
.call_property_put("CT_Intitule", &[intitule_variant])?;
Ok(())
}
pub fn set_ct_type(&self, type_tiers: i32) -> SageResult<()> {
let type_variant = SafeVariant::from_i32(type_tiers);
self.dispatch()
.call_property_put("CT_Type", &[type_variant])?;
Ok(())
}
pub fn set_ct_qualite(&self, qualite: &str) -> SageResult<()> {
let qualite_variant = SafeVariant::from_string(qualite);
self.dispatch()
.call_property_put("CT_Qualite", &[qualite_variant])?;
Ok(())
}
pub fn set_ct_classement(&self, classement: &str) -> SageResult<()> {
let classement_variant = SafeVariant::from_string(classement);
self.dispatch()
.call_property_put("CT_Classement", &[classement_variant])?;
Ok(())
}
pub fn set_ct_commentaire(&self, commentaire: &str) -> SageResult<()> {
let commentaire_variant = SafeVariant::from_string(commentaire);
self.dispatch()
.call_property_put("CT_Commentaire", &[commentaire_variant])?;
Ok(())
}
pub fn set_ct_identifiant(&self, identifiant: &str) -> SageResult<()> {
let identifiant_variant = SafeVariant::from_string(identifiant);
self.dispatch()
.call_property_put("CT_Identifiant", &[identifiant_variant])?;
Ok(())
}
pub fn set_ct_siret(&self, siret: &str) -> SageResult<()> {
let siret_variant = SafeVariant::from_string(siret);
self.dispatch()
.call_property_put("CT_Siret", &[siret_variant])?;
Ok(())
}
pub fn set_ct_ape(&self, ape: &str) -> SageResult<()> {
let ape_variant = SafeVariant::from_string(ape);
self.dispatch()
.call_property_put("CT_Ape", &[ape_variant])?;
Ok(())
}
pub fn set_ct_sommeil(&self, sommeil: bool) -> SageResult<()> {
let sommeil_variant = SafeVariant::from_bool(sommeil);
self.dispatch()
.call_property_put("CT_Sommeil", &[sommeil_variant])?;
Ok(())
}
pub fn set_ct_compte_collectif(&self, compte: &str) -> SageResult<()> {
let compte_variant = SafeVariant::from_string(compte);
self.dispatch()
.call_property_put("CT_CompteCollectif", &[compte_variant])?;
Ok(())
}
pub fn set_ct_periode(&self, periode: i32) -> SageResult<()> {
let periode_variant = SafeVariant::from_i32(periode);
self.dispatch()
.call_property_put("CT_Periode", &[periode_variant])?;
Ok(())
}
pub fn set_ct_encours(&self, encours: f64) -> SageResult<()> {
let encours_variant = SafeVariant::R8(encours);
self.dispatch()
.call_property_put("CT_Encours", &[encours_variant])?;
Ok(())
}
pub fn set_ct_assurance(&self, assurance: f64) -> SageResult<()> {
let assurance_variant = SafeVariant::R8(assurance);
self.dispatch()
.call_property_put("CT_Assurance", &[assurance_variant])?;
Ok(())
}
pub fn set_ct_condition_reglement(&self, condition: i32) -> SageResult<()> {
let condition_variant = SafeVariant::from_i32(condition);
self.dispatch()
.call_property_put("CT_ConditionReglement", &[condition_variant])?;
Ok(())
}
pub fn set_ct_nb_jour(&self, nb_jour: i32) -> SageResult<()> {
let nb_jour_variant = SafeVariant::from_i32(nb_jour);
self.dispatch()
.call_property_put("CT_NbJour", &[nb_jour_variant])?;
Ok(())
}
pub fn set_ct_jour_reglement(&self, jour: i32) -> SageResult<()> {
let jour_variant = SafeVariant::from_i32(jour);
self.dispatch()
.call_property_put("CT_JourReglement", &[jour_variant])?;
Ok(())
}
pub fn set_ct_jour_net(&self, jour_net: i32) -> SageResult<()> {
let jour_variant = SafeVariant::from_i32(jour_net);
self.dispatch()
.call_property_put("CT_JourNet", &[jour_variant])?;
Ok(())
}
pub fn set_ct_condition_reglement_le(&self, le: i32) -> SageResult<()> {
let le_variant = SafeVariant::from_i32(le);
self.dispatch()
.call_property_put("CT_ConditionReglementLe", &[le_variant])?;
Ok(())
}
pub fn set_ct_taux_escompte(&self, taux: f64) -> SageResult<()> {
let taux_variant = SafeVariant::R8(taux);
self.dispatch()
.call_property_put("CT_TauxEscompte", &[taux_variant])?;
Ok(())
}
pub fn set_ct_taux_retard(&self, taux: f64) -> SageResult<()> {
let taux_variant = SafeVariant::R8(taux);
self.dispatch()
.call_property_put("CT_TauxRetard", &[taux_variant])?;
Ok(())
}
pub fn set_ct_taux_risque(&self, taux: f64) -> SageResult<()> {
let taux_variant = SafeVariant::R8(taux);
self.dispatch()
.call_property_put("CT_TauxRisque", &[taux_variant])?;
Ok(())
}
pub fn set_ct_tva_encaissement(&self, tva: bool) -> SageResult<()> {
let tva_variant = SafeVariant::from_bool(tva);
self.dispatch()
.call_property_put("CT_TvaEncaissement", &[tva_variant])?;
Ok(())
}
pub fn set_ct_tva_regime(&self, regime: i32) -> SageResult<()> {
let regime_variant = SafeVariant::from_i32(regime);
self.dispatch()
.call_property_put("CT_TvaRegime", &[regime_variant])?;
Ok(())
}
pub fn info_libre(&self, index: i16) -> SageResult<String> {
let idx = SafeVariant::from_i16(index);
self.dispatch()
.call_method_by_name("InfoLibre", &[idx])?
.to_string()
}
pub fn set_info_libre(&self, index: i16, valeur: &str) -> SageResult<()> {
let idx = SafeVariant::from_i16(index);
let val = SafeVariant::from_string(valeur);
self.dispatch()
.call_method_by_name("InfoLibre", &[idx, val])?;
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(())
}
pub fn refresh(&self) -> SageResult<()> {
self.dispatch().call_method_by_name("Refresh", &[])?;
Ok(())
}
}
impl Clone for Tiers {
fn clone(&self) -> Self {
Self {
dispatch: self.dispatch.clone(),
}
}
}
impl PartialEq for Tiers {
fn eq(&self, other: &Self) -> bool {
match (self.ct_num(), other.ct_num()) {
(Ok(num1), Ok(num2)) => num1 == num2,
_ => false,
}
}
}
impl FromDispatchNew for Tiers {
fn from_dispatch_new(dispatch: IDispatch) -> SageResult<Self> {
Ok(Self { dispatch })
}
}