using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using System.Windows.Forms;
namespace MercatorUi.MovableControls.ButtonsCodes
{
public static class Script
{
public static void Exec(MercatorUi.MovableControls. MovableButton clickedButton)
{
MercatorUi.Forms.Booking. BookingForm bookingForm = (MercatorUi.Forms.Booking. BookingForm )clickedButton.FindForm();
MercatorUi.Engine.Cpta. BookingEngine bookingEngine = (MercatorUi.Engine.Cpta. BookingEngine )bookingForm.BookingEngine;
if (bookingEngine.LIGNES_C.Rows.Count == 0)
return ;
int n_dec = Convert .ToInt32(bookingEngine.PIEDS_C[ "n_dec" ]);
// demander les proportions
double [] proportion = Dialogs .AskDoubles( "Proportion professionnelle ? \n\r Dividende Diviseur" , 6, 7, bookingEngine.DisplayFormat, bookingEngine.DisplayFormat);
if (proportion == null ) // on a choisi Annuler
return ;
if ( Math .Round(proportion[1], 5) == 0) // diviseur nul
return ;
// calculer le nouveau montant de la ligne (total et tva) et modifier la ligne existante
double totdv = Math .Round(( Convert .ToDouble(bookingEngine.LIGNES_C.Rows[0][ "tot_dv" ]) * proportion[0] / proportion[1]), n_dec);
double tauxtva = MercatorController.xFunctions.xLookupLocalDouble(bookingEngine.TVACODES, string .Format( "id='{0}'" , Api.UnquoteSql(bookingEngine.LIGNES_C.Rows[0][ "id_tva" ].ToString())), "TAUX" );
double tvadv = Math .Round((totdv * tauxtva / 100), n_dec);
bookingEngine.LIGNES_C.Rows[0][ "tot_dv" ] = totdv;
bookingEngine.LIGNES_C.Rows[0][ "tva_dv" ] = tvadv;
// ajouter une deuxième ligne
MercatorUi.Sig. Sig sig_gen = MercatorUi.Sig. _SigsStatic .SigByModule(MercatorUi.Sig. _SigEnum .GEN); // sera nécessaire pour indiquer qu'on va insérer un compte général
int n = bookingEngine.AppendLine(); // initialise une nouvelle ligne et renvoie le n° de la ligne créée
if (!bookingEngine.InsertAccount(sig_gen, "483000" , bookingEngine.LIGNES_C.Rows[n]))
{
Dialogs .Stop( "InsertAccount 1 : " + bookingEngine.LastError);
return ;
}
bookingEngine.LIGNES_C.Rows[n][ "tot_dv" ] = Math .Round( Convert .ToDouble(bookingEngine.PIEDS_C[ "tot_ttc_dv" ]) - totdv - tvadv, n_dec);
}
}
}