/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Models.FactureClt;

import Models.Produit.ListeProduit;
import Controllers.Traitement.Adaptateur;
import Models.Caisse.CarteBancaireClt;
import Models.Client.Client;
import Models.Client.ClientEntreprise;
import Models.Client.ClientPassager;
import Models.ChequeClt.ChequeClt;
import Models.TraiteClt.TraiteClt;
import java.util.ArrayList;
import javafx.collections.ObservableList;
/**
 *
 * @author PC-Maher
 */
public class FactureClt {
    
    public String CodeFactureClt ;
    public Integer TypeClient ;  //0 Personne  1 Entreprise 2 Passager
    public Client CltPersonne ;
    public ClientEntreprise CltEntreprise ;
    public ClientPassager CltPassager ;
    public String DateFacture;
    public String ModePaiement; //0 :espace   1:cheque    2 :carte bancaire
    public String TypeRegement;  //0 Comptent      1 Facilite
    public String NetAPayer ;
    public String TotalTVA ;
    public String TotalHorsTaxNet;
    public String Remise;
    public String timbre;
    public String Devise ;
    public String idCommandeClt ;
    public String IdBonLivraisonClt;
    public Integer CodeUser;  //code profile de utilisateur du programme
    public ObservableList<ListeProduit> listeproduit ;
    
    
    //------------------------------
    
    //TypeRegement (0) ==> Facture payer en Comptent
    //ModePaiement 1:cheque    
    public ChequeClt Cheque;
    
    //TypeRegement (0) ==> Facture payer en Comptent
    //ModePaiement 2 :carte bancaire
    CarteBancaireClt CarteBancaire;
    
    
    //----------------------------------------
    
    //TypeRegement (1) ==> Facture payer par facilite
    private String Avance ;
    private String TotalMontantTraite ;
    private String NbrTraite ;
    private String MontantInteret ;
    private String TauxInteret ;
    private String TypeFacilite ;  //0 Traite | 1 Cheque         true Traite | false Cheque
    private ArrayList<TraiteClt> listeTraites;
    private ArrayList<ChequeClt> listeCheques;
    
    public Integer getTypeClient() {
        return TypeClient;
    }

    public void setTypeClient(Integer TypeClient) {
        this.TypeClient = TypeClient;
    }
    
    public String getTypeClientString() {
        String Client = null ;
        
        if(TypeClient == 0){
            Client= "Ancien client";
        }
        if(TypeClient == 1){
            Client= "Entreprise";
        }
        if(TypeClient == 2){
            Client= "Passager";
        }
        return Client ;
    }

    public String getCodeFactureClt() {
        return CodeFactureClt;
    }

    public void setCodeFactureClt(String CodeFactureClt) {
        this.CodeFactureClt = CodeFactureClt;
    }

    public Client getCltPersonne() {
        return CltPersonne;
    }

    public void setCltPersonne(Client CltPersonne) {
        this.CltPersonne = CltPersonne;
    }

    public ClientEntreprise getCltEntreprise() {
        return CltEntreprise;
    }

    public void setCltEntreprise(ClientEntreprise CltEntreprise) {
        this.CltEntreprise = CltEntreprise;
    }

    public ClientPassager getCltPassager() {
        return CltPassager;
    }

    public void setCltPassager(ClientPassager CltPassager) {
        this.CltPassager = CltPassager;
    }

    public String getDateFacture() {
        return DateFacture;
    }

    public void setDateFacture(String DateFacture) {
        this.DateFacture = DateFacture;
    }

    public String getRemise() {
        return Remise;
    }

    public void setRemise(String Remise) {
        this.Remise = Remise;
    }

    
    

    public String getTimbre() {
        return timbre;
    }

    public void setTimbre(String timbre) {
        this.timbre = timbre;
    }

    

    public String getTypeRegement() {
        return TypeRegement;
    }

    public void setTypeRegement(String TypeRegement) {
        this.TypeRegement = TypeRegement;
    }
    
    public String getTypeRegementString() {
        String mode ="";
        switch (this.TypeRegement) {
            case "0":
                mode= "Comptant";
                break;
            case "1":
                mode = "Facilité";
                break;
        }
        return mode ;
    }
    
    public int getTypeRegementInteger(){
        int mode = 0;
        switch (this.TypeRegement) {
            case "Comptant":
                mode= 0;
                break;
            case "Facilité":
                mode = 1;
                break;
            case "0":
                mode = 0;
                break;
            case "1":
                mode = 1;
                break;
                
        }
        return mode ;
    }
    
    
    public String getNetAPayer() {
        return NetAPayer;
    }

    public void setNetAPayer(String NetAPayer) {
        this.NetAPayer = NetAPayer;
    }

    public String getTotalTVA() {
        return TotalTVA;
    }

    public void setTotalTVA(String TotalTVA) {
        this.TotalTVA = TotalTVA;
    }

    public String getTotalHorsTaxNet() {
        return TotalHorsTaxNet;
    }

    public void setTotalHorsTaxNet(String TotalHorsTaxNet) {
        this.TotalHorsTaxNet = TotalHorsTaxNet;
    }

    public String getModePaiement() {
        return ModePaiement;
    }

    public void setModePaiement(String ModePaiement) {
        this.ModePaiement = ModePaiement;
    }

    

    public String getDevise() {
        return Devise;
    }

    public void setDevise(String Devise) {
        this.Devise = Devise;
    }

    public String getIdCommandeClt() {
        return idCommandeClt;
    }

    public void setIdCommandeClt(String idCommandeClt) {
        this.idCommandeClt = idCommandeClt;
    }

    

    public Integer getCodeUser() {
        return CodeUser;
    }

    public void setCodeUser(Integer CodeUser) {
        this.CodeUser = CodeUser;
    }

    public ObservableList<ListeProduit> getListeproduit() {
        return listeproduit;
    }

    public void setListeproduit(ObservableList<ListeProduit> listeproduit) {
        this.listeproduit = listeproduit;
    }

    public ChequeClt getCheque() {
        return Cheque;
    }

    public void setCheque(ChequeClt Cheque) {
        this.Cheque = Cheque;
    }

    public CarteBancaireClt getCarteBancaire() {
        return CarteBancaire;
    }

    public void setCarteBancaire(CarteBancaireClt CarteBancaire) {
        this.CarteBancaire = CarteBancaire;
    }

    
    
    public String getAvance() {
        return Avance;
    }

    public void setAvance(String Avance) {
        this.Avance = Avance;
    }

    public float getAvanceNumber() {
        return Adaptateur.ArrondStringToFloat(Avance);
    }

    public void setAvanceNumber(float Avance) {
        this.Avance = Adaptateur.ArrondFloatToString(Avance);
    }
    
    
    
    public String getTotalMontantTraite() {
        return TotalMontantTraite;
    }

    public void setTotalMontantTraite(String TotalMontantTraite) {
        this.TotalMontantTraite = TotalMontantTraite;
    }

    public float getTotalMontantTraiteNumber() {
        return Adaptateur.ArrondStringToFloat(TotalMontantTraite);
    }

    public void setTotalMontantTraiteNumber(float TotalMontantTraite) {
        this.TotalMontantTraite = Adaptateur.ArrondFloatToString(TotalMontantTraite);
    }
    
    public String getNbrTraite() {
        return NbrTraite;
    }

    public void setNbrTraite(String NbrTraite) {
        this.NbrTraite = NbrTraite;
    }

    public Integer getNbrTraiteNumber() {
        return Integer.parseInt(this.NbrTraite);
    }

    public void setNbrTraiteNumber(Integer NbrTraite) {
        this.NbrTraite = String.valueOf(NbrTraite);
    }
    
    public String getMontantInteret() {
        return MontantInteret;
    }

    public void setMontantInteret(String MontantInteret) {
        this.MontantInteret = MontantInteret;
    }

    public float getMontantInteretNumber() {
        return Adaptateur.ArrondStringToFloat(MontantInteret);
    }

    public void setMontantInteretNumber(float MontantInteret) {
        this.MontantInteret = Adaptateur.ArrondFloatToString(MontantInteret);
    }
    
    public String getTauxInteret() {
        return TauxInteret;
    }

    public void setTauxInteret(String TauxInteret) {
        this.TauxInteret = TauxInteret;
    }

    public float getTauxInteretNumber() {
        return Adaptateur.ArrondStringToFloat(TauxInteret);
    }

    public void setTauxInteretNumber(float TauxInteret) {
        this.TauxInteret = Adaptateur.ArrondFloatToString(TauxInteret);
    }
    
    public String getTypeFacilite() {
        return TypeFacilite;
    }

    public void setTypeFacilite(String Type_Facilite) {
        this.TypeFacilite = Type_Facilite;
    }
    
    public Boolean getTypeFaciliteBoolean() {
        if(TypeFacilite.equals("0")){
            return true;
        }else{
            return false;
        }
    }

    public void setTypeFaciliteBoolean(Boolean Type_Facilite) {
        if(Type_Facilite){
            this.TypeFacilite = "0";
        }else{
            this.TypeFacilite = "1";
        }
    }
    
    
    public ArrayList<TraiteClt> getListeTraites() {
        return listeTraites;
    }

    public void setListeTraites(ArrayList<TraiteClt> listeTraites) {
        this.listeTraites = listeTraites;
    }

    public ArrayList<ChequeClt> getListeCheques() {
        return listeCheques;
    }

    public void setListeCheques(ArrayList<ChequeClt> listeCheques) {
        this.listeCheques = listeCheques;
    }

    public String getIdBonLivraisonClt() {
        return IdBonLivraisonClt;
    }

    public void setIdBonLivraisonClt(String IdBonLivraisonClt) {
        this.IdBonLivraisonClt = IdBonLivraisonClt;
    }

    @Override
    public String toString() {
        return "FactureClt{" + "CodeFactureClt=" + CodeFactureClt + ", TypeClient=" + TypeClient + ", CltPersonne=" + CltPersonne + ", CltEntreprise=" + CltEntreprise + ", CltPassager=" + CltPassager + ", DateFacture=" + DateFacture + ", ModePaiement=" + ModePaiement + ", TypeRegement=" + TypeRegement + ", NetAPayer=" + NetAPayer + ", TotalTVA=" + TotalTVA + ", TotalHorsTaxNet=" + TotalHorsTaxNet + ", Remise=" + Remise + ", timbre=" + timbre + ", Devise=" + Devise + ", idCommandeClt=" + idCommandeClt + ", IdBonLivraisonClt=" + IdBonLivraisonClt + ", CodeUser=" + CodeUser + ", listeproduit=" + listeproduit + ", Avance=" + Avance + ", TotalMontantTraite=" + TotalMontantTraite + ", NbrTraite=" + NbrTraite + ", MontantInteret=" + MontantInteret + ", TauxInteret=" + TauxInteret + ", TypeFacilite=" + TypeFacilite + ", listeTraites=" + listeTraites + ", listeCheques=" + listeCheques + '}';
    }

    

    
    
    
    
    

}
