f_presta.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. using Fuel01.Models;
  2. using Newtonsoft.Json;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Diagnostics;
  8. using System.Drawing;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Security.Cryptography.X509Certificates;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Forms;
  15. using System.Xml.Linq;
  16. using Excel = Microsoft.Office.Interop.Excel;
  17. namespace Fuel01
  18. {
  19. public partial class f_presta : Form
  20. {
  21. DataSet1.tb_prestaDataTable tb_presta = new DataSet1.tb_prestaDataTable();
  22. DataSet1.tb_venteDataTable tb_vente = new DataSet1.tb_venteDataTable();
  23. DataSet1.tb_stationDataTable tb_station = new DataSet1.tb_stationDataTable();
  24. DataSet1.tb_stationRow current_sta = null;
  25. List<Produit> lproduit = new List<Produit>();
  26. DataGridViewRow myrow = null;
  27. float oldqtt = 0;
  28. string id_sta;
  29. public f_presta(TextBox key_sta)
  30. {
  31. InitializeComponent();
  32. if (File.Exists(Program.folder + @"\param\produit.xml"))
  33. init_list_produit();
  34. if (File.Exists(Program.subfolder + @"\presta.json"))
  35. {
  36. tb_presta = DbUtil.LoadPrestaFromJson(Program.subfolder + @"\presta.json", lproduit);
  37. tb_presta.AcceptChanges();
  38. }
  39. tbprestaBindingSource.DataSource = tb_presta;
  40. if (File.Exists(Program.subfolder + @"\vente.json"))
  41. tb_vente = DbUtil.LoadFromJson<DataSet1.tb_venteDataTable>(Program.subfolder + @"\vente.json", tb_vente);
  42. tb_vente.AcceptChanges();
  43. tbventeBindingSource.DataSource = tb_vente;
  44. id_sta = key_sta.Text;
  45. tbprestaBindingSource.Filter = " sta_pr='" + id_sta + "'";
  46. tbventeBindingSource.Filter = " station_vt='" + id_sta + "'";
  47. tbprestaBindingSource.Sort = "sta_pr,kind_pr,prod_pr";
  48. key_sta.TextChanged += key_sta_TextChanged;
  49. key_sta_TextChanged(key_sta, null);
  50. t_facture.Enabled = Program.isExcel;
  51. }
  52. void key_sta_TextChanged(object sender, EventArgs e)
  53. {
  54. TextBox mytxtb = sender as TextBox;
  55. id_sta = mytxtb.Text;
  56. tbprestaBindingSource.Filter = " sta_pr='" + id_sta + "'";
  57. tbventeBindingSource.Filter = " station_vt='" + id_sta + "'";
  58. current_sta = tb_station.FindBykey_sta(id_sta);
  59. }
  60. private void f_presta_FormClosing(object sender, FormClosingEventArgs e)
  61. {
  62. SavePresta();
  63. }
  64. private void init_list_produit()
  65. {
  66. XDocument xRoot = XDocument.Load(Program.folder + @"\param\produit.xml");
  67. var data = from item in xRoot.Descendants("tb_prod")
  68. orderby item.Element("type_prod").Value, item.Element("lib_prod").Value
  69. select new Produit()
  70. {
  71. key_prod = item.Element("key_prod").Value,
  72. lib_prod = item.Element("lib_prod").Value,
  73. type_prod = item.Element("type_prod").Value
  74. };
  75. lproduit = data.ToList();
  76. dg_presta_prod.Items.Clear();
  77. dg_presta_prod.DataSource = lproduit;
  78. dg_presta_prod.DisplayMember = "lib_prod";
  79. dg_presta_prod.ValueMember = "key_prod";
  80. }
  81. private void dg_presta_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
  82. {
  83. if (e.RowIndex > 0)
  84. {
  85. if (dg_presta.Rows[e.RowIndex - 1].Cells[0].Value is System.DBNull)
  86. {
  87. dg_presta.Rows[e.RowIndex - 1].Cells[0].Value = id_sta;
  88. }
  89. if (dg_presta.Rows[e.RowIndex - 1].Cells[0].Value == null)
  90. {
  91. dg_presta.Rows[e.RowIndex - 1].Cells[0].Value = id_sta;
  92. }
  93. }
  94. }
  95. private void bt_ajCarbu_Click(object sender, EventArgs e)
  96. {
  97. foreach (Produit p in lproduit.Where(p => p.type_prod == "Carburant"))
  98. {
  99. bool ok = false;
  100. for (int i = 0; i < dg_presta.RowCount - 1 && !ok; i++)
  101. if (dg_presta.Rows[i].Cells[1].Value.ToString() == p.key_prod)
  102. ok = true;
  103. if (!ok)
  104. {
  105. DataSet1.tb_prestaRow myNewRow = tb_presta.Newtb_prestaRow();
  106. myNewRow["sta_pr"] = id_sta;
  107. myNewRow["prod_pr"] = p.key_prod;
  108. myNewRow["kind_pr"] = p.type_prod;
  109. myNewRow["unite_pr"] = "L";
  110. myNewRow["pu_pr"] = 1;
  111. myNewRow["tva_pr"] = 20;
  112. myNewRow["ttc_pr"] = 1.2;
  113. tb_presta.Addtb_prestaRow(myNewRow);
  114. }
  115. }
  116. }
  117. private void bt_ajProd_Click(object sender, EventArgs e)
  118. {
  119. foreach (Produit p in lproduit)
  120. {
  121. bool ok = false;
  122. for (int i = 0; i < dg_presta.RowCount - 1 && !ok; i++)
  123. if (dg_presta.Rows[i].Cells[1].Value.ToString() == p.key_prod)
  124. ok = true;
  125. if (!ok)
  126. {
  127. DataSet1.tb_prestaRow myNewRow = tb_presta.Newtb_prestaRow();
  128. myNewRow["sta_pr"] = id_sta;
  129. myNewRow["prod_pr"] = p.key_prod;
  130. myNewRow["kind_pr"] = p.type_prod;
  131. myNewRow["unite_pr"] = p.type_prod == "Carburant" ? "L" : "U";
  132. myNewRow["pu_pr"] = 1;
  133. myNewRow["tva_pr"] = 20;
  134. myNewRow["ttc_pr"] = 1.2;
  135. tb_presta.Addtb_prestaRow(myNewRow);
  136. }
  137. }
  138. }
  139. private void bt_calcHT_Click(object sender, EventArgs e)
  140. {
  141. foreach (DataSet1.tb_prestaRow p in tb_presta.Rows)
  142. {
  143. if (p["ttc_pr"].ToString() != "" && p["tva_pr"].ToString() != "")
  144. {
  145. Decimal ttc = (Decimal)p["ttc_pr"];
  146. Decimal tva = 1 + (Decimal)p["tva_pr"] / 100;
  147. Decimal ht = ttc / tva;
  148. ht = Math.Round(ht, 3);
  149. p["pu_pr"] = ht;
  150. }
  151. }
  152. }
  153. private void bt_calcTTC_Click(object sender, EventArgs e)
  154. {
  155. foreach (DataSet1.tb_prestaRow p in tb_presta.Rows)
  156. {
  157. Console.WriteLine(p["sta_pr"].ToString());
  158. Console.WriteLine(p["prod_pr"].ToString());
  159. Console.WriteLine(p["kind_pr"].ToString());
  160. Console.WriteLine(p["unite_pr"].ToString());
  161. Console.WriteLine(p["pu_pr"].ToString());
  162. Console.WriteLine(p["tva_pr"].ToString());
  163. Console.WriteLine(p["ttc_pr"].ToString());
  164. if (p["pu_pr"].ToString() != "" && p["tva_pr"].ToString() != "")
  165. {
  166. Decimal ht = (Decimal)p["pu_pr"];
  167. Decimal tva = 1 + (Decimal)p["tva_pr"] / 100;
  168. Decimal ttc = ht * tva;
  169. ttc = Math.Round(ttc, 3);
  170. p["ttc_pr"] = ttc;
  171. }
  172. }
  173. }
  174. private void dg_vente_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
  175. {
  176. if (e.RowIndex > 0)
  177. {
  178. if (dg_vente.Rows[e.RowIndex - 1].Cells[0].Value is System.DBNull)
  179. {
  180. dg_vente.Rows[e.RowIndex - 1].Cells[0].Value = Program.key_ope;
  181. dg_vente.Rows[e.RowIndex - 1].Cells[1].Value = id_sta;
  182. }
  183. if (dg_vente.Rows[e.RowIndex - 1].Cells[0].Value == null)
  184. {
  185. dg_vente.Rows[e.RowIndex - 1].Cells[0].Value = Program.key_ope;
  186. dg_vente.Rows[e.RowIndex - 1].Cells[1].Value = id_sta;
  187. }
  188. }
  189. }
  190. private void dg_presta_CellEndEdit(object sender, DataGridViewCellEventArgs e)
  191. {
  192. if (e.ColumnIndex != 1) return;
  193. string typeProd = "";
  194. string prod = dg_presta.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
  195. if (lproduit.Exists(xx => xx.key_prod == prod))
  196. typeProd = lproduit.Find(xx => xx.key_prod == prod).type_prod;
  197. dg_presta.Rows[e.RowIndex].Cells[2].Value = typeProd;
  198. }
  199. private void SavePresta()
  200. {
  201. List<PrestaSta> prestaStas = new List<PrestaSta>();
  202. string filter = tbprestaBindingSource.Filter;
  203. tbprestaBindingSource.Filter = "";
  204. tbprestaBindingSource.Sort = "sta_pr,kind_pr,prod_pr";
  205. var result0 = JsonConvert.SerializeObject(tb_presta);
  206. var result1 = JsonConvert.DeserializeObject<List<Presta>>(result0);
  207. var oldPr = "*";
  208. Prod prod;
  209. PrestaSta newPresta = new PrestaSta();
  210. foreach (var presta in result1)
  211. {
  212. var l_pr = lproduit.FirstOrDefault(x => x.key_prod == presta.prod_pr);
  213. if (l_pr == null)
  214. {
  215. continue;
  216. }
  217. var idSta = presta.sta_pr;
  218. var kind = presta.kind_pr;
  219. if (idSta != oldPr)
  220. {
  221. if (newPresta != null && !string.IsNullOrEmpty(newPresta.sta_pr))
  222. {
  223. prestaStas.Add(newPresta);
  224. }
  225. newPresta = new PrestaSta();
  226. oldPr = idSta;
  227. }
  228. prod = new Prod
  229. {
  230. lib_prod = l_pr.lib_prod,
  231. prod_pr = presta.prod_pr,
  232. unite_pr = presta.unite_pr,
  233. pu_pr = presta.pu_pr.ToString("0.000"),
  234. tva_pr = presta.tva_pr.ToString("0.000"),
  235. ttc_pr = presta.ttc_pr.ToString("0.000")
  236. };
  237. newPresta.sta_pr = idSta;
  238. if (kind == "Carburant")
  239. {
  240. newPresta.carburants.Add(prod);
  241. }
  242. else
  243. {
  244. newPresta.autres.Add(prod);
  245. }
  246. }
  247. tbprestaBindingSource.Filter = filter;
  248. DbUtil.SaveToJson<DataSet1.tb_prestaDataTable>(Program.subfolder + @"\prestalocal.json", tb_presta);
  249. DbUtil.SaveToJson(prestaStas, Program.subfolder + @"\presta.json");
  250. }
  251. private void button1_Click(object sender, EventArgs e)
  252. {
  253. SavePresta();
  254. }
  255. private void t_facture_Click(object sender, EventArgs e)
  256. {
  257. f_facture ffac = new f_facture(current_sta["key_sta"].ToString());
  258. ffac.ShowDialog();
  259. }
  260. private void dg_vente_CellEndEdit(object sender, DataGridViewCellEventArgs e)
  261. {
  262. Console.WriteLine("EN EDIT ");
  263. bool ok = true;
  264. if (myrow != null)
  265. {
  266. Console.WriteLine("EN EDIT OK1");
  267. float qtt = 0;
  268. float puttc = 0;
  269. float tva = 0;
  270. float ttc = 0;
  271. float ht = 0;
  272. ok = float.TryParse(myrow.Cells[5].Value.ToString(), out qtt);
  273. if (ok) ok = float.TryParse(myrow.Cells[6].Value.ToString(), out puttc);
  274. if (ok) ok = float.TryParse(myrow.Cells[7].Value.ToString(), out tva);
  275. if (ok) ok = float.TryParse(myrow.Cells[8].Value.ToString(), out ht);
  276. if (ok) ok = float.TryParse(myrow.Cells[9].Value.ToString(), out ttc);
  277. if (!ok)
  278. {
  279. MessageBox.Show("Erreur de saisie");
  280. dg_vente.Rows[e.RowIndex].Cells[5].Value = oldqtt;
  281. return;
  282. }
  283. dg_vente.Rows[e.RowIndex].Cells[9].Value = qtt * puttc;
  284. dg_vente.Rows[e.RowIndex].Cells[8].Value = (qtt * puttc) / (1 + (tva / 100));
  285. }
  286. myrow = null;
  287. oldqtt = 0;
  288. Console.WriteLine("ENd EDIT OUt");
  289. }
  290. private void dg_vente_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
  291. {
  292. Console.WriteLine("BEGIN EDIT");
  293. myrow = dg_vente.Rows[e.RowIndex];
  294. if (!float.TryParse(myrow.Cells[5].Value.ToString(), out oldqtt))
  295. e.Cancel = true;
  296. }
  297. private void dg_vente_DataError(object sender, DataGridViewDataErrorEventArgs e)
  298. {
  299. if (myrow != null)
  300. {
  301. MessageBox.Show("Appuyez sur la touche Echappe (ESC Escape) \r\n dans la grille de saisie pour Abndonner l'opération", "Erreur de saisie");
  302. dg_vente.Rows[e.RowIndex].Cells[5].Value = oldqtt;
  303. myrow = null;
  304. oldqtt = 0;
  305. }
  306. }
  307. private void chk_modif_CheckedChanged(object sender, EventArgs e)
  308. {
  309. dg_vt_qtt.ReadOnly = !chk_modif.Checked;
  310. for (int i = 0; i < dg_vente.ColumnCount; i++)
  311. {
  312. if (i == 5)
  313. dg_vente.Columns[i].DefaultCellStyle.BackColor = chk_modif.Checked ? Color.LimeGreen : Color.Empty;
  314. else
  315. dg_vente.Columns[i].DefaultCellStyle.BackColor = chk_modif.Checked ? Color.OrangeRed : Color.Empty;
  316. }
  317. }
  318. }
  319. }