OM 100CV10 Registre de taxe

SUGGESTED

Bonjour, 

au niveau du Registre des taxes, j'ai pu voir que celui-ci est disponible depuis les OM en 100C V8. 

Je n'ai pas trouvé d'exemple pour générer à la création d'une écriture via IMPEncodeur le registre des taxes manuellement.

Je suis obligé de valider le processus IPMEncodeur qui va passer une écriture dans le registre automatiquement mais qui n'est pas correcte car pas de montant de base. Et ensuite retourner sur cette écriture ayant le registre afin de pouvoir ajouter mes lignes de registre est-ce le fonctionnement normal ? 

Au niveau de la création : 

 IRegistreLigneTaxe ligTaxe = ligneTVA.RegistreTaxes.Ligne[1];
if (ligTaxe != null)
{
ligTaxe.RT_TypeLigne = TypeLigneRegistre.TypeLigneRegistreAucune;
ligTaxe.TA_TTaux = TaxeTauxType.TaxeTauxTypePourcent;
ligTaxe.RT_Montant = ligneTVA.EC_Montant;
ligTaxe.RT_Base = 100;
ligneTVA.RegistreTaxes.Ligne[1] = ligTaxe;
ligneTVA.Write();
}

Cette écriture est prise en compte, mais quand je fais appel à _encoder.Process() la ligne générée a l'air de l'être automatiquement et la base imposable est toujours vide. 

Je dois donc après avoir appelé _encoder.Process();

Retrouver la ligne ayant reçue le registre des taxes car la fonction HasRegistreTax() ne me retourne jamais true malgré que l'EC_No se trouve bien dans la base de données

SELECT EC_No FROM F_ECRITUREC
INNER JOIN F_REGTAXE ON F_REGTAXE.EC_No = F_ECRITUREC.EC_No
WHERE EC_Piece = '33924' 

Puis modifier et ajouter toutes mes lignes de registres sur cette écriture 

short countLineTax = 0;
foreach (var registre in taxRegisterDetailsList) // Liste de mes lignes de registre
{
countLineTax++;
IRegistreLigneTaxe lineTax = ecritureImporte.RegistreTaxes.Ligne[countLineTax];
IBOTaxe3 taxe = (IBOTaxe3)sageAccess.FactoryTaxe.ReadCode(registre.TAXENUMERO);
lineTax.Taxe = taxe;
lineTax.TA_TTaux = TaxeTauxType.TaxeTauxTypePourcent;
lineTax.RT_Base = registre.DETAILREGISTRETAXEBASE;
lineTax.RT_Montant = registre.DETAILREGISTRETAXETAXE;
lineTax.TA_Taux = taxe.TA_Taux;
lineTax.CompteG = sageAccess.FactoryCompteG.ReadNumero(registre.COMPTENUMERO);
ecritureImporte.RegistreTaxes.Ligne[countLineTax] = lineTax;
ecritureImporte.Write();
}

Merci, 

  • SUGGESTED

    Bonjour

    je développe à l'aide des OM. Je n'ai pas eu l'occasion de développer autour des registres de taxe. Cependant je vois qu'il existe une fonction WriteDefaultRegistreTaxe() pour l'objet IBOEcriture3. Est-ce que vous utilisez cette fonction ?

    Pour avoir fait l'erreur une fois, vérifier bien que vos modifications dans le registre de taxes s'appliquent bien sur l'objet à créer et non sur une copie (j'avais pour ma part fait l'erreur d'extraire l'information du dépôt dans un objet secondaire dans une commande achat puis de modifier cette copie plutôt que de modifier l'objet à créer).

    Cordialement

  • Bonjour  ,

    Faites nous savoir si la réponse de Guillaume LEJEUNE a été utile en la marquant comme vérifiée.

    Pour cela, au niveau de la réponse apportée, cliquer sur l'option "Vérifier la réponse".

    Cela aura pour effet de marquer la réponse en vert et de permettre aux autres membres de la communauté, ou aux personnes qui auraient également le besoin de voir que cela a fonctionné.

    Merci d'avoir utilisé la communauté.

    Floriane

  • 0 in reply to Guillaume LEJEUNE

    Bonjour, merci pour le conseil.

    Je viens d'essayer plusieurs cas et rien n'y fait à la création toujours un registre par défaut.

    L'écriture IBOEcriture3 ligneTVA est créée au départ et celle-ci n'est pas persistée avant la modification du registre des taxes. 

    J'ai essayé en utilisant la méthode WriteDefaultRegistreTaxe(); avant de faire persister la ligne. 

    IBOEcriture3 ligneTVA = (IBOEcriture3)encoder.FactoryEcritureIn.Create();
    ligneTVA.CompteG = sageAccess.FactoryCompteG.ReadNumero(taxe.COMPTENUMERO);

    ligneTVA.EC_Intitule = ecriture.ECRITUREREFERENCE;
    ligneTVA.EC_RefPiece = ecriture.ECRITUREREFERENCE;
    ligneTVA.EC_Sens = ecriture.ECRITURESENS.Equals("0") ? EcritureSensType.EcritureSensTypeDebit : EcritureSensType.EcritureSensTypeCredit;
    ligneTVA.EC_Montant = taxe.DETAILREGISTRETAXETAXE;
    ligneTVA.Taxe = sageAccess.FactoryTaxe.ReadCode(taxe.TAXENUMERO);
    ligneTVA.TA_Provenance = (TaxeProvenanceType)taxe.DETAILREGISTRETAXEPROVENANCE;
    ligneTVA.RegistreTaxes.TypeRegistre = entryType;

    IRegistreLigneTaxe ligTaxe = ligneTVA.RegistreTaxes.Ligne[1];
    if (ligTaxe != null)
    {
    ligTaxe.RT_TypeLigne = TypeLigneRegistre.TypeLigneRegistreAucune;
    ligTaxe.TA_TTaux = TaxeTauxType.TaxeTauxTypePourcent;
    ligTaxe.RT_Montant = ligneTVA.EC_Montant;
    ligTaxe.RT_Base = 100;
    ligneTVA.RegistreTaxes.Ligne[1] = ligTaxe;
    ligneTVA.WriteDefaultRegistreTaxe(); // Avec ou sans pas de changement. 
    }
    ligneTVA.WriteDefault(); // Write pas de changement 

    Cordialement, 

  • 0
    SUGGESTED

    Bonjour M. TARI,

    Je vous communique le document sur les nouveautés des Objets Métiers v. 8 et qui comporte un exemple de code pour gérer les registres taxes  :
     
    https://fr-kb.sage.com/portal/app/portlets/results/viewsolution.jsp?solutionid=211228161510610

    Si vous avez besoin d'un accompagnement sur le développement sur Sage 100, je vous invite à contacter votre Ingénieur Commercial Sage qui pourra vous présenter le contrat Sage Service Pro.

    Faites-nous savoir si la réponse vous a été utile en la marquant comme vérifiée . Pour cela, cliquez sur l’option « Vérifier la réponse ».

    Cordialement,

    Thierry