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" ]);
// percentages vragen
double [] proportion = Dialogs .AskDoubles( "Professioneel percentage ? \n\r Dividend Verdeler" , 6, 7, bookingEngine.DisplayFormat, bookingEngine.DisplayFormat);
if (proportion == null ) // u koos voor Annuleren
return ;
if ( Math .Round(proportion[1], 5) == 0) // verdeler nul
return ;
// het nieuwe bedrag van de lijn (totaal en btw) berekenen en de bestaande lijn wijzigen
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;
// een tweede lijn toevoegen
MercatorUi.Sig. Sig sig_gen = MercatorUi.Sig. _SigsStatic .SigByModule(MercatorUi.Sig. _SigEnum .GEN); // zal nodig zijn om aan te geven dat we een algemene rekening zullen invoeren
int n = bookingEngine.AppendLine(); // initialiseert een nieuwe lijn en verwijst naar het aangemaakte lijnnummer
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);
}
}
}