DC - AutoStock (channel Beta)

Permet le réajustement des stocks en vente ou les prix dans l'usine de production pour DC.

  1. // ==UserScript==
  2. // @name DC - AutoStock (channel Beta)
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.2.1.Beta
  5. // @description Permet le réajustement des stocks en vente ou les prix dans l'usine de production pour DC.
  6. // @author Mochizuki Kaneda Amane [Amane-Mochizuki #75956]
  7. // @match https://www.dreadcast.net/Main
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=dreadcast.net
  9. // @grant none
  10. // @license CC-BY-NC-SA-4.0
  11. // ==/UserScript==
  12.  
  13. // CC-BY-NC-SA-4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
  14. // Sous brevet impérial à CDL.
  15. // [Changelog]
  16. // 1.0.0
  17. // - Version initiale
  18. //
  19. // 1.1.0 :
  20. // - mode ouverture/fermeture automatique (corrige également le bug de dupplication du menu)
  21. // - correction bug saisie de données
  22. // - détection de l'interface ouverte. si non compatible affichage d'un message (sera retiré dans la version stable)
  23. // - préparatif du développement pour "boutique"
  24. //
  25. // 1.2.0 :
  26. // - création fonction export prix usine
  27. // - création fonction import prix usine
  28. // - correction bug : mise en vente stock usine > plante si la réserve est défini sur "zéro"
  29. // - correction bug : changer prix usine > prix de vente des articles ancienne génération. > la ligne est désormais ignoré et demandera un traitement manuel. Un avertissement est affiché dans le journal
  30. //
  31. // 1.2.1 :
  32. // - masquer le message d'avertissement sur les stock non géré (banque, agence immobilières...). Celui ci reste présent pour les boutiques de vente sous la forme
  33. // "AutoStock : Boutique à venir."
  34. //
  35. // Bug Connu :
  36. //
  37. // Roadmap :
  38. // - création version boutique
  39. // - création fonction permettant de "vider la vitrine" d'une boutique
  40. //
  41.  
  42.  
  43.  
  44. //Initialisation et GUI
  45. var versionAutoStock = "1.2.1.Beta"
  46.  
  47. var Global_GUIActive = false
  48. var UnStock
  49. var TypeUI
  50. var htmlstockclass
  51. var NombrestockScann
  52.  
  53. // détection event d'ouverture fermeture d'un stock
  54. $(document).ajaxSuccess(function (e, xhr, opt) {
  55. if (document.getElementById("modif_stocks_form") != null && Global_GUIActive == false )
  56. {
  57. htmlstockclass = document.getElementById("modif_stocks_form").getElementsByClassName("stock");
  58.  
  59. if ( $(htmlstockclass).length > 0 )
  60. {
  61. //alert("stock détecté, scan en cours")
  62. TypeUI = DetectionUiStock(CleanHtml(htmlstockclass[0].outerHTML))
  63. //alert("scan fini, " + TypeUI)
  64. }
  65. else
  66. {
  67. //alert("pas de stock détecté")
  68. TypeUI = "Inconnu"
  69. }
  70.  
  71. console.log("AutoStock : ouvert sur profil " + TypeUI)
  72. // alert("AutoStock : ouvert sur profil " + TypeUI)
  73.  
  74.  
  75. if (TypeUI == "Usine")
  76. {
  77. AfficherAutoStockUsine();
  78. }
  79. else
  80. {
  81. if (TypeUI == "Boutique")
  82. {
  83. AfficherAutoStockBoutique();
  84. }
  85. else
  86. {
  87. //alert("interface inconnue");
  88. AfficherAutoStockInconnu();
  89. }
  90. }
  91.  
  92. Global_GUIActive = true
  93. }
  94. });
  95.  
  96. $(document).ajaxSuccess(function (e, xhr, opt) {
  97. if (document.getElementById("modif_stocks_form") == null && Global_GUIActive == true )
  98. {
  99. console.log("AutoStock : fermé")
  100. Global_GUIActive = false
  101. }
  102. });
  103.  
  104.  
  105. //function AfficherAutoStock (zEvent) {
  106.  
  107. function AfficherAutoStockInconnu () {
  108.  
  109. var menu = document.createElement ('div');
  110. menu.innerHTML = '<span style="left:135px;"></span>';
  111. menu.setAttribute ('id', 'AutoStockMenu');
  112.  
  113. document.getElementById("modif_stocks_form").appendChild(menu);
  114.  
  115. }
  116.  
  117. function AfficherAutoStockBoutique () {
  118.  
  119. var menu = document.createElement ('div');
  120. menu.innerHTML = '<span style="left:135px;">AutoStock : Boutique à venir.</span>';
  121. menu.setAttribute ('id', 'AutoStockMenu');
  122.  
  123. document.getElementById("modif_stocks_form").appendChild(menu);
  124.  
  125. }
  126.  
  127. function AfficherAutoStockUsine () {
  128.  
  129. var menu = document.createElement ('div');
  130. menu.innerHTML = '<span id="AutoStockRootMenu" style="left:25px;"><a id="MettreEnVenteUsine" style="cursor:pointer;">Mettre en vente</a> | <a id="ChangePrixUsine" style="cursor:pointer;">Changer prix</a> | <a id="ExportPrixUsine" style="cursor:pointer;">Exporter prix</a> | <a id="ImportPrixUsine" style="cursor:pointer;">Importer prix</a></span>'
  131. + '<div id="AutoStockListAnchor" style="left:515px; top:-498px; width:1px; height:1px; background-color:red">'
  132. + '<div id="AutoStockLog" style="height:518px; width:500px; background-color:#0B4E64; overflow: auto;">Autostock v'+versionAutoStock+' par Amane-Mochizuki<br />journal de traitement :</div></div>';
  133. menu.setAttribute ('id', 'AutoStockMenu');
  134.  
  135. document.getElementById("modif_stocks_form").appendChild(menu);
  136.  
  137. document.getElementById("MettreEnVenteUsine").addEventListener ( "click", MettreEnVenteUsine, false);
  138. document.getElementById("ChangePrixUsine").addEventListener ( "click", ChangePrixUsine, false);
  139. document.getElementById("ExportPrixUsine").addEventListener ( "click", ExportPrixUsine, false);
  140. document.getElementById("ImportPrixUsine").addEventListener ( "click", ImportPrixUsine, false);
  141. }
  142.  
  143.  
  144. // Fonctions de modifications stock USINE
  145.  
  146. function MettreEnVenteUsine (zEvent) {
  147.  
  148. OutputLog('<span style="color:black;">------------------ Traitement de mise en vente ------------------</span>')
  149. var htmlNode
  150. var elements = document.getElementById("modif_stocks_form").getElementsByClassName("stock");
  151. var Unobjet_Scannee
  152. var UnObjet_ID
  153. var UnObjet_Type
  154. var UnObjet_Nom
  155. var UnObjet_StockDispo
  156. var UnObjet_PrixProd
  157. var UnObjet_StockVente
  158. var UnObjet_PrixVente
  159. var OutputString
  160. var MaxStockVente
  161.  
  162. var InputBoxAChanger
  163.  
  164. var ReserveStock = prompt('Autostock : \n Seuil de réserve exclue de la vente pour produits standard \n champs vide = 0')
  165. if (ReserveStock == null){
  166. OutputLog('<span style="color:black;">Paramètre de réserve standard : </span> Opération annulée')
  167. OutputLog('<span style="color:black;">---------------- Fin Traitement de mise en vente ----------------</span>')
  168. return 0
  169. }
  170.  
  171. if (ReserveStock == ""){
  172. ReserveStock = 0
  173. }
  174.  
  175. if (isdigit(ReserveStock) || ReserveStock == 0)
  176. {
  177. OutputLog('<span style="color:black;">Paramètre de réserve standard : </span>' + ReserveStock)
  178. }
  179. else
  180. {
  181. OutputLog('<span style="color:black;">Paramètre de réserve standard invalide : </span>' + ReserveStock)
  182. OutputLog('<span style="color:black;">---------------- Fin Traitement de mise en vente ----------------</span>')
  183. return 0
  184. }
  185.  
  186.  
  187. var ReserveStockAliments = prompt('Autostock : \n Seuil de réserve exclue de la vente pour produits alimentaires \n champs vide = 0')
  188. if (ReserveStockAliments == null){
  189. OutputLog('<span style="color:black;">Paramètre de réserve aliments : </span> Opération annulée')
  190. OutputLog('<span style="color:black;">---------------- Fin Traitement de mise en vente ----------------</span>')
  191. return 0
  192. }
  193. if (ReserveStockAliments == ""){
  194. ReserveStockAliments = 0
  195. }
  196. if (isdigit(ReserveStockAliments) || ReserveStockAliments == 0 )
  197. {
  198. OutputLog('<span style="color:black;">Paramètre de réserve aliments : </span>' + ReserveStockAliments)
  199. }
  200. else
  201. {
  202. OutputLog('<span style="color:black;">Paramètre de réserve aliments invalide : </span>' + ReserveStockAliments)
  203. OutputLog('<span style="color:black;">---------------- Fin Traitement de mise en vente ----------------</span>')
  204. return 0
  205. }
  206.  
  207. for(var i = 0; i < elements.length; i++)
  208. {
  209. OutputString = ''
  210. Unobjet_Scannee = ScanHtmlUnObjetUsine(elements[i].outerHTML) ;
  211.  
  212. UnObjet_ID = Unobjet_Scannee[0]
  213. UnObjet_Type = Unobjet_Scannee[1]
  214. UnObjet_Nom = Unobjet_Scannee[2]
  215. UnObjet_StockDispo = Unobjet_Scannee[3]
  216. UnObjet_PrixProd = Unobjet_Scannee[4]
  217. UnObjet_StockVente = Unobjet_Scannee[5]
  218. UnObjet_PrixVente = Unobjet_Scannee[6]
  219.  
  220. var htmlinput
  221.  
  222. if (UnObjet_Type == "Stock de 10 aliments") {
  223.  
  224. MaxStockVente = UnObjet_StockDispo - ReserveStockAliments
  225. if (MaxStockVente < 0 ) {
  226. MaxStockVente = 0
  227. }
  228.  
  229. InputBoxAChanger = 'champ_cpt_' + UnObjet_ID
  230. htmlinput = document.getElementById(InputBoxAChanger);
  231. htmlinput.value = MaxStockVente;
  232. htmlinput.className = "champ";
  233.  
  234. OutputLog('<span style="color:#fff;">' + UnObjet_Nom + '</span> en vente : <span class="couleur5">' + UnObjet_StockVente + '</span> > <span class="couleur1">' +
  235. MaxStockVente + '</span> sur total <span class="couleur0">' + UnObjet_StockDispo + '</span> (réserve ' + ReserveStockAliments + ')' )
  236. }
  237. else
  238. {
  239. MaxStockVente = UnObjet_StockDispo - ReserveStock
  240. if (MaxStockVente < 0 ) {
  241. MaxStockVente = 0
  242. }
  243. OutputLog('<span style="color:#fff;">' + UnObjet_Nom + '</span> en vente : <span class="couleur5">' + UnObjet_StockVente + '</span> > <span class="couleur1">' +
  244. MaxStockVente + '</span> sur total <span class="couleur0">' + UnObjet_StockDispo + '</span> (réserve ' + ReserveStock + ')' )
  245.  
  246. InputBoxAChanger = 'champ_cpt_' + UnObjet_ID
  247. htmlinput = document.getElementById(InputBoxAChanger);
  248. htmlinput.value = MaxStockVente;
  249. htmlinput.className = "champ";
  250.  
  251. }
  252.  
  253.  
  254. }
  255. OutputLog('<span style="color:black;">---------------- Fin Traitement de mise en vente ----------------</span>')
  256. }
  257.  
  258. function ChangePrixUsine (zEvent) {
  259. OutputLog('<span style="color:black;">---------------- Traitement de changement prix ----------------</span>')
  260. var htmlNode
  261. var elements = document.getElementById("modif_stocks_form").getElementsByClassName("stock");
  262. var Unobjet_Scannee
  263. var UnObjet_ID
  264. var UnObjet_Type
  265. var UnObjet_Nom
  266. var UnObjet_StockDispo
  267. var UnObjet_PrixProd
  268. var UnObjet_StockVente
  269. var UnObjet_PrixVente
  270. var OutputString
  271. var NouveauPrixVente
  272.  
  273. var InputBoxAChanger
  274. var MargeAppliquerbis
  275.  
  276. var MargeAppliquer = prompt('Autostock : \n Marge a appliquer sur le prix de production (en %) \n champs vide = 0%')
  277. if (MargeAppliquer == null){
  278. OutputLog('<span style="color:black;">Paramètre de marge a appliquer: </span> Opération annulée')
  279. OutputLog('<span style="color:black;">---------------- Fin Traitement de changement prix ----------------</span>')
  280. return 0
  281. }
  282.  
  283. if (MargeAppliquer == ""){
  284. MargeAppliquer = 0
  285. }
  286.  
  287.  
  288. MargeAppliquerbis = (MargeAppliquer / 100)
  289. MargeAppliquerbis = (1 + MargeAppliquerbis)
  290.  
  291.  
  292.  
  293. OutputLog('<span style="color:black;">Paramètre de marge a appliquer : </span>' + MargeAppliquer + '%')
  294.  
  295.  
  296. for(var i = 0; i < elements.length; i++)
  297. {
  298. OutputString = ''
  299. Unobjet_Scannee = ScanHtmlUnObjetUsine(elements[i].outerHTML) ;
  300.  
  301. UnObjet_ID = Unobjet_Scannee[0]
  302. UnObjet_Type = Unobjet_Scannee[1]
  303. UnObjet_Nom = Unobjet_Scannee[2]
  304. UnObjet_StockDispo = Unobjet_Scannee[3]
  305. UnObjet_PrixProd = Unobjet_Scannee[4]
  306. UnObjet_StockVente = Unobjet_Scannee[5]
  307. UnObjet_PrixVente = Unobjet_Scannee[6]
  308.  
  309. var htmlinput
  310.  
  311. //NouveauPrixVente = ()
  312. NouveauPrixVente = Math.trunc(UnObjet_PrixProd * MargeAppliquerbis)
  313.  
  314. // alert(NouveauPrixVente + 'prod ' + UnObjet_PrixProd + '*marge ' +MargeAppliquerbis)
  315.  
  316. if (UnObjet_PrixProd != 0)
  317. {
  318.  
  319. InputBoxAChanger = 'champ_stock_' + UnObjet_ID
  320. htmlinput = document.getElementById(InputBoxAChanger);
  321. htmlinput.value = NouveauPrixVente;
  322. htmlinput.className = "champ";
  323.  
  324. OutputLog('<span style="color:#fff;">' + UnObjet_Nom + '</span> prix de vente : <span class="couleur5">' + UnObjet_PrixVente + '</span> > <span class="couleur1">' +
  325. NouveauPrixVente + '</span> (marge ' + MargeAppliquer + ')' )
  326. }
  327. else
  328. {
  329. OutputLog('<span style="color:#ff0;">/!\\ Modification ignoré car le prix de prod. est de 0¢r (Ancienne Génération ?)')
  330. OutputLog('<span style="color:#ff0;">--> </span> '+ UnObjet_Nom + '</span>' )
  331. }
  332. }
  333. OutputLog('<span style="color:black;">---------------- Fin Traitement de mise en vente ----------------</span>')
  334. }
  335.  
  336. function ExportPrixUsine (zEvent) {
  337.  
  338. OutputLog('<span style="color:black;">--------------- Traitement pour export des prix --------------</span>')
  339. var uneligne = ''
  340. var csv = 'ProductID;Designation;Prix\n'
  341.  
  342. // début du process
  343.  
  344. var elements = document.getElementById("modif_stocks_form").getElementsByClassName("stock");
  345. var Unobjet_Scannee
  346. var UnObjet_ID
  347. var UnObjet_Type
  348. var UnObjet_Nom
  349. var UnObjet_StockDispo
  350. var UnObjet_PrixProd
  351. var UnObjet_StockVente
  352. var UnObjet_PrixVente
  353.  
  354. for(var i = 0; i < elements.length; i++)
  355. {
  356. uneligne = ''
  357. Unobjet_Scannee = ScanHtmlUnObjetUsine(elements[i].outerHTML) ;
  358.  
  359. UnObjet_ID = Unobjet_Scannee[0]
  360. UnObjet_Type = Unobjet_Scannee[1]
  361. UnObjet_Nom = Unobjet_Scannee[2]
  362. UnObjet_StockDispo = Unobjet_Scannee[3]
  363. UnObjet_PrixProd = Unobjet_Scannee[4]
  364. UnObjet_StockVente = Unobjet_Scannee[5]
  365. UnObjet_PrixVente = Unobjet_Scannee[6]
  366.  
  367. uneligne = UnObjet_ID +";"+UnObjet_Nom+";"+UnObjet_PrixVente+"\n"
  368.  
  369. csv = csv + uneligne
  370.  
  371. }
  372. OutputLog('Données exportées à sauvegarder pour la fonction Importer prix')
  373. // affichage du resultat strings
  374. var htmlNode
  375. htmlNode = document.createElement('p');
  376. htmlNode.innerHTML = '<textarea disabled name="PrixExport" cols="55" rows="16">'+csv+'</textarea>'
  377. document.getElementById("AutoStockLog").appendChild(htmlNode);
  378.  
  379. OutputLog('<span style="color:black;">------------- Fin Traitement pour export des prix -------------</span>')
  380. }
  381.  
  382. function ImportPrixUsine (zEvent) {
  383.  
  384. OutputLog('<span style="color:black;">--------------- Traitement pour import des prix --------------</span>')
  385. var uneligne = ''
  386. var csv = 'ProductID;Designation;Prix\n'
  387.  
  388. // début du process
  389.  
  390. var elements = document.getElementById("modif_stocks_form").getElementsByClassName("stock");
  391. var Unobjet_Scannee
  392. var UnObjet_ID
  393. var UnObjet_Type
  394. var UnObjet_Nom
  395. var UnObjet_StockDispo
  396. var UnObjet_PrixProd
  397. var UnObjet_StockVente
  398. var UnObjet_PrixVente
  399.  
  400. OutputLog('saisir les données pour importer les prix')
  401. // affichage du resultat strings
  402. var htmlNode
  403. htmlNode = document.createElement('p');
  404. htmlNode.innerHTML = '<span class="ZonePrixImport"><textarea id="PrixImport" cols="55" rows="6"></textarea></span><br /><span class="ConfirmerImport"><a id="AnnulerImportUsine" style="cursor:pointer;">Annuler</a> | <a id="ValiderImportUsine" style="cursor:pointer;">Valider</a></span>'
  405. document.getElementById("AutoStockLog").appendChild(htmlNode);
  406.  
  407. $("#AutoStockRootMenu").children().prop('hidden',true);
  408. document.getElementById("AnnulerImportUsine").addEventListener ( "click", AnnulerImportUsine, false);
  409. document.getElementById("ValiderImportUsine").addEventListener ( "click", ValiderImportUsine, false);
  410.  
  411.  
  412. }
  413.  
  414. function AnnulerImportUsine (zEvent) {
  415.  
  416. $( ".ConfirmerImport" ).empty();
  417. document.getElementById('PrixImport').disabled = true
  418. document.getElementById('PrixImport').id = 'PrixImportAnnule'
  419. $("#AutoStockRootMenu").children().prop('hidden',false);
  420.  
  421. OutputLog("Processus d'importation annulé")
  422. OutputLog('<span style="color:black;">------------ Fin traitement pour import des prix -------------</span>')
  423. }
  424.  
  425. function ValiderImportUsine (zEvent) {
  426. var GUIerror = "/!\\"
  427. var UneLigneImporte
  428. var DonneeUneLigne
  429. var idTrouve
  430.  
  431. var UnProductID
  432. var UneDesignation
  433. var UnPrix
  434.  
  435. var Unobjet_Scannee
  436. var UnObjet_ID
  437. var UnObjet_Type
  438. var UnObjet_Nom
  439. var UnObjet_StockDispo
  440. var UnObjet_PrixProd
  441. var UnObjet_StockVente
  442. var UnObjet_PrixVente
  443. var InputBoxAChanger
  444. var htmlinput
  445.  
  446.  
  447. $( ".ConfirmerImport" ).empty();
  448. var DataInput = document.getElementById('PrixImport').value;
  449.  
  450.  
  451. document.getElementById('PrixImport').disabled = true
  452. document.getElementById('PrixImport').id = 'PrixImportValide'
  453.  
  454.  
  455.  
  456. //alert(DataInput)
  457.  
  458.  
  459. var elements = document.getElementById("modif_stocks_form").getElementsByClassName("stock");
  460.  
  461.  
  462. var LignesImporte = DataInput.split('\n');
  463.  
  464.  
  465. for(var i = 0; i < LignesImporte.length; i++)
  466. {
  467. UneLigneImporte = LignesImporte[i]
  468.  
  469. DonneeUneLigne = UneLigneImporte.split(';');
  470.  
  471. if (DonneeUneLigne[0] != undefined && DonneeUneLigne[1] != undefined && DonneeUneLigne[2] != undefined ) {
  472.  
  473. UnProductID = DonneeUneLigne[0]
  474. UneDesignation = DonneeUneLigne[1]
  475. UnPrix = DonneeUneLigne[2]
  476.  
  477. if ( UnProductID == 'ProductID' && UneDesignation == 'Designation' && UnPrix == 'Prix' && i == 0 )
  478. {
  479. OutputLog("démarrage de l'importation : la structure semble cohérente.")
  480. }
  481. else
  482. {
  483. if (i != 0)
  484. {
  485.  
  486. idTrouve = false
  487.  
  488. for(var y = 0; y < elements.length; y++)
  489. {
  490. Unobjet_Scannee = ScanHtmlUnObjetUsine(elements[y].outerHTML) ;
  491.  
  492. UnObjet_ID = Unobjet_Scannee[0]
  493. UnObjet_Type = Unobjet_Scannee[1]
  494. UnObjet_Nom = Unobjet_Scannee[2]
  495. UnObjet_StockDispo = Unobjet_Scannee[3]
  496. UnObjet_PrixProd = Unobjet_Scannee[4]
  497. UnObjet_StockVente = Unobjet_Scannee[5]
  498. UnObjet_PrixVente = Unobjet_Scannee[6]
  499.  
  500.  
  501. if (UnObjet_ID == UnProductID)
  502. {
  503. idTrouve = true
  504. if (UnObjet_Nom == UneDesignation)
  505. {
  506.  
  507. // traitement
  508. InputBoxAChanger = 'champ_stock_' + UnProductID
  509.  
  510. htmlinput = document.getElementById(InputBoxAChanger);
  511. htmlinput.value = UnPrix
  512. htmlinput.className = "champ";
  513.  
  514. OutputLog('<span style="color:#fff;">' + UneDesignation + '</span> prix de vente : <span class="couleur5">' + UnObjet_PrixVente + '</span> > <span class="couleur1">' + UnPrix + '</span>' )
  515. }
  516. else
  517. {
  518.  
  519. // id trouvé, nom incohérent
  520.  
  521. OutputLog('<span style="color:#f00;">' + GUIerror + " Erreur l'ID produit " + UnObjet_ID + " a été trouvé avec un autre nom (ligne ignorée) :</span>" )
  522. OutputLog('<span style="color:#f00;">--> </span> importé : <span style="color:#fff;">'+ UneDesignation + '</span> / stock : <span style="color:#fff;">'+ UnObjet_Nom + '</span>')
  523. }
  524. }
  525.  
  526. }
  527. if (idTrouve == false)
  528. {
  529. // id absent
  530.  
  531. OutputLog('<span style="color:#ff0;">' + GUIerror + " L'ID produit " + UnProductID + " n'a pas été trouvé dans le stock et à été ignoré")
  532. OutputLog('<span style="color:#ff0;">--> </span> Stock manquant : <span style="color:#fff;">'+ UneDesignation + '</span>' )
  533. }
  534.  
  535. }
  536. else
  537. {
  538. // format de fichier incorect, entete manquant
  539. OutputLog('<span style="color:#f00;">' + GUIerror + " Erreur de structure sur données, l'entête de contrôle est absent ou invalide.</span>" )
  540. OutputLog("Annulation de l'opération")
  541. i = 999999
  542. }
  543.  
  544. }
  545.  
  546. }
  547. else
  548. {
  549. if (UneLigneImporte == '')
  550. {
  551. //OutputLog('---------------------------------------------------------------------')
  552. // OutputLog('<span style="color:#ff0;">' + GUIerror + ' Ligne de données vide ignorée')
  553. // OutputLog('---------------------------------------------------------------------')
  554. }
  555. else
  556. {
  557. //OutputLog('---------------------------------------------------------------------')
  558. OutputLog('<span style="color:#f00;">' + GUIerror + " Erreur de structure sur ligne : l'entrée suivante a été ignoré.")
  559. OutputLog('<span style="color:#f00;">--> </span>' + UneLigneImporte)
  560. //OutputLog('---------------------------------------------------------------------')
  561. }
  562. }
  563.  
  564.  
  565. }
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572. $("#AutoStockRootMenu").children().prop('hidden',false);
  573.  
  574. OutputLog("Processus d'importation terminé")
  575. OutputLog('<span style="color:black;">------------ Fin traitement pour import des prix -------------</span>')
  576. }
  577.  
  578. // zone librairie de fonction utiles...
  579.  
  580.  
  581. // détection du type de stock ouvert (boutique, immobilier, banque, usine....
  582. function DetectionUiStock(stringhtmlStock) {
  583. var resultat = "Inconnu"
  584. if (stringhtmlStock.includes('Stock de') && stringhtmlStock.includes('<input id="champ_cpt_') && stringhtmlStock.includes('<input id="champ_stock_') )
  585. {
  586. resultat = "Usine"
  587. }
  588. else
  589. {
  590. if (stringhtmlStock.includes('<td id="prix_unitaire_') && stringhtmlStock.includes('<input id="champ_stock_'))
  591. {
  592. resultat = "Boutique"
  593. }
  594. }
  595.  
  596. return resultat
  597. //alert(stringhtmlStock);
  598. }
  599.  
  600.  
  601. // Ecriture dans le journal de sortie
  602. function OutputLog(HTMLstring){
  603. var htmlNode
  604. htmlNode = document.createElement('p');
  605. htmlNode.innerHTML = HTMLstring
  606. htmlNode.setAttribute('style', 'font-family:"Trebuchet MS",Verdana,Arial,sans-serif; color: #00e1ed; font-variant: small-caps; font-size: 13px;')
  607. document.getElementById("AutoStockLog").appendChild(htmlNode);
  608. }
  609.  
  610.  
  611. //Fonction permettant d'extraire les données d'un objet DC sur le modèle de stock USINE
  612. function ScanHtmlUnObjetUsine(html) {
  613. var unitem = html
  614. var unitem_temp = ''
  615. var unitem_type = ''
  616. var unitem_nom = ''
  617. var unitem_id = ''
  618. var unitem_stockdispo = ''
  619. var unitem_prixprod = ''
  620. var unitem_stockvente = ''
  621. var unitem_prixvente = ''
  622. var result = new Array();
  623. unitem_temp = Extractsubstring(unitem, '<div class="nom_item">', '</div>');
  624. unitem_temp = CleanHtml(unitem_temp)
  625.  
  626. unitem_id = Extractsubstring(unitem, '<div id="up_cpt_', '" class="btnUp">');
  627.  
  628. unitem_type = Extractsubstring(unitem_temp, 'Stock de', '<span class="couleur4">');
  629. unitem_type = 'Stock de ' + unitem_type
  630.  
  631. unitem_nom = Extractsubstring(unitem_temp, '<span class="couleur4">', '</span>');
  632.  
  633. unitem_stockdispo = Extractsubstring(unitem, '<td class="quantite_vente type2" style="height:20px;width:50px;">', '</td>');
  634. unitem_prixprod = Extractsubstring(unitem, '<td id="prix_unitaire_'+ unitem_id +'" class="prix type2" style="padding-left:20px;width:75px;">', '</td>');
  635. unitem_stockvente = Extractsubstring(unitem, 'name="cpt_'+ unitem_id +'" value="', '">');
  636. unitem_prixvente = Extractsubstring(unitem, 'name="stock_'+ unitem_id +'" value="', '">');
  637.  
  638.  
  639. unitem_prixprod = unitem_prixprod.replace(/\s/g, ''); // suppression regex des espaces nécessaire pour calcul sur la fonction de change prix 25 000Cr => 25000Cr
  640. unitem_prixprod = unitem_prixprod.replace('Cr', ''); // suppression regex des espaces nécessaire pour calcul sur la fonction de change prix 25000Cr => 25000
  641. return [unitem_id, unitem_type, unitem_nom, unitem_stockdispo, unitem_prixprod, unitem_stockvente, unitem_prixvente]
  642. }
  643.  
  644. // fonction nettoyant les sauts de ligne et espaces du html pour traitement facilité
  645. function CleanHtml (SringANettoyer) {
  646. var newPageTxt = SringANettoyer
  647. .split("\n")
  648. .map((line) => line.trim())
  649. .join(" ");
  650. newPageTxt = newPageTxt.replaceAll('\n', '');
  651. return newPageTxt
  652. }
  653.  
  654. // Fonction permettant d'extraire certains éléments d'une string, délémité entre le préfix et le suffix : exemple Extractsubstring ("Bonjour tout le monde", "Bonjour", "monde") retourne "tout le"
  655. function Extractsubstring (s, prefix, suffix) {
  656. //var s = string;
  657. var i = s.indexOf(prefix);
  658. if (i >= 0) {
  659. s = s.substring(i + prefix.length);
  660. }
  661. else {
  662. return '';
  663. }
  664. if (suffix) {
  665. i = s.indexOf(suffix);
  666. if (i >= 0) {
  667. s = s.substring(0, i);
  668. }
  669. else {
  670. return '';
  671. }
  672. }
  673. s = s.trim()
  674. return s;
  675. }
  676.  
  677.  
  678. // Fonction vérifiant si la variable est un nombre entier
  679. const isdigit=(value)=>{
  680. const val=Number(value)?true:false
  681. //console.log(val);
  682. return val
  683. }