f_presta.cs 16 KB

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