Advertisement
nicolaslagios

Kaliergontas- Import function for weight

Dec 28th, 2022 (edited)
2,601
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.47 KB | None | 0 0
  1. //Bήμα 1 - Έλεγχος αν το προιόν βρίσκεται στο csv για custom μεταφορικά και αν ναι ενεργοποίηση custom μεταφορικών
  2.         //επίσης αυτόματη απενεργοποίηση όταν μπει βάρος σε αυτά που λείπει
  3. function custommetaforika($gross, $net, $id){
  4.     foreach(array_slice(file('https://kaliergontas.gr/ecs_custom/skus_without_weight/final.csv'),1) as $grammh){
  5.         $arraygrammhs = explode(',',$grammh);
  6.         $array[] = (explode(',',$grammh))[0];
  7.     }
  8.     if (in_array($id, $array, true) && 0.1234 > ($gross + $net)){
  9.         return "yes";
  10.     }else{
  11.         return "no";
  12.     }
  13. }
  14.  
  15. //Βήμα 2 - Δημιουργία βάρους για προιόντα χωρίς custom μεταφορικά και custom μεταφορικά για προιόντα χωρίς βάρος
  16. function calculateWeight($gross, $net, $id) {
  17.     global $wpdb;
  18.     //Ο παρακάτω κώδικας φτιάχνει το βάρος των κωδικών που έχουν βάρος από το erp.
  19.     //Για κωδικούς που δεν έχουν βάρος, τους βάζει ένα τυπικό βάρος 0.1234
  20.         //Αμέσως μετά (στην αρχή όπως θα δείς) επισκέπτεται ένα αρχείο csv το οποίο περιέχει κόστη μεταφορικών
  21.         //για κωδικούς που είναι γνωστοί και δεν έχουν βάρος και θέλουμε να τους δώσουμε ξεχωριστά μεταφορικά.
  22.         //Αυτό γίνεται με προσθήκη μεταφορικών στην βάση δεδομένων για το plugin "WooCommerce Shipping Per Product v2"
  23.         //Oι περιοχές που έχουν οριστεί custom για Ελλάδα είναι 15 συνολικά.
  24.         //Τα ορίσματα είναι: Περιοχή 1η (GR1) => ['Περιοχή','Κόστος μεταφορικών','Προτεραιότητα']
  25.         //Σημείωση! Αν θες να προσθέσεις και άλλους κωδικούς, απλώς βάλε τους στο csv μαζί με τα κόστη.
  26.         //Σημείωση 2! Κάποιες περιοχές πάνε μαζί, οπότε θα έχουν ίδια κόστη μεταφορικών. Δες Group στα σχόλια του δυναμικού array
  27.         //Σημείωση 3! Για τις δυσπρόσιτες περιοχές παίρνονται οι κωδικοί erp του array και ορίζεται τιμή fix 10€, στο τέλος του if παρακάτω
  28.     foreach(array_slice(file('https://kaliergontas.gr/ecs_custom/skus_without_weight/final.csv'),1) as $grammh){
  29.         $arraygrammhs = explode(',',$grammh);
  30.         $array[$arraygrammhs[0]] = array(
  31.                 'GR1' => ['GR1', $arraygrammhs[1], 0], //Αττική -> Group 1
  32.                 'GR2' => ['GR2', $arraygrammhs[2], 1], //Θεσσαλονίκη -> Group 2
  33.                 'GR3' => ['GR3', $arraygrammhs[2], 2], //Πάτρα -> Group 2
  34.                 'GR4' => ['GR4', $arraygrammhs[2], 3], //Πελοπόννησος -> Group 2
  35.                 'GR5' => ['GR5', $arraygrammhs[2], 4], //Κεντρική Ελλάδα -> Group 2
  36.                 'GR6' => ['GR6', $arraygrammhs[5], 5], //Εύβοια -> Group 5
  37.                 'GR7' => ['GR7', $arraygrammhs[2], 6], //Θεσσαλία -> Group 2
  38.                 'GR8' => ['GR8', $arraygrammhs[2], 7], //Ήπειρος -> Group 2
  39.                 'GR9' => ['GR9', $arraygrammhs[3], 8], //Μακεδονία -> Group 3
  40.                 'GR10' => ['GR10', $arraygrammhs[3], 9], //Θράκη -> Group 3
  41.                 'GR11' => ['GR11', $arraygrammhs[5], 10], //Κρήτη -> Group 5
  42.                 'GR12' => ['GR12', $arraygrammhs[5], 11], //Δωδεκάνησα -> Group 5
  43.                 'GR13' => ['GR13', $arraygrammhs[5], 12], //Β.Α. Αιγαίο -> Group 5
  44.                 'GR14' => ['GR14', $arraygrammhs[4], 13], //Ιώνιο -> Group 4
  45.                 'GR15' => ['GR15', $arraygrammhs[4], 14] //Κυκλάδες -> Group 4
  46.         );
  47.     }
  48.     if (array_key_exists($id, $array)) { //αν το erp sku είναι μέσα στο αρχείο csv, τρέξε πρώτα τα ακόλουθα:
  49.         if(0.1234 > ($gross + $net)){ //αν δεν υπάρχει βάρος στο erp
  50.             $query = $wpdb->prepare("SELECT post_id FROM `wp_postmeta` WHERE `meta_key` LIKE 'erp_sku' AND `meta_value` = %s", $id); //βρες το id του προιόντος
  51.             $results = $wpdb->get_results($query); //χρησιμοποιώντας το erp sku
  52.             if (!empty($results)) { //αν καταφέρεις και βρεις το id του προιόντος
  53.                 $post_id = $results[0]->post_id; //αποθήκευσέ το σε αυτή την μεταβλητή
  54.                 foreach (array_keys($array[array_keys($array)[0]]) as $keyforrule) { //Για κάθε περιοχή που θα βρεθεί πχ στον 1ο κωδικό
  55.                     $rule_states[] = $keyforrule; //πήγαινε και φτιάξε ένα array με όλες τις περιοχές, πχ GR1,GR2,GR3....GR15
  56.                 }
  57.                 foreach ($rule_states as $rule_state) { //Για κάθε περιοχή του Array που έφτιαξες
  58.                     $query = $wpdb->prepare("SELECT * FROM `wp_woocommerce_per_product_shipping_rules` WHERE `rule_state` = %s AND `product_id` = %d", $rule_state, $post_id);
  59.                     $rule_results = $wpdb->get_results($query); //έλεγξε αν ο το προιόν έχει ήδη custom μεταφορικά για αυτή την περιοχή στην βάση δεδομένων
  60.                     if (!empty($rule_results)) { //Αν ναι, τότε κάνε ανανέωση με τις καινούργιες τιμές.
  61.                         $wpdb->query("UPDATE `wp_woocommerce_per_product_shipping_rules` SET `rule_cost` = '".$array[$id][$rule_state][1]."' WHERE `wp_woocommerce_per_product_shipping_rules`.`product_id` = ".$post_id." AND `wp_woocommerce_per_product_shipping_rules`.`rule_state` = '".$rule_state."';");
  62.                     } else { //Αν όχι, τότε πήγαινε και φτιάξε την εγγραφή στην βάση με τις τιμές από το csv
  63.                         $wpdb->query("INSERT INTO `wp_woocommerce_per_product_shipping_rules` (`product_id`, `rule_country`, `rule_state`, `rule_cost`, `rule_order`) VALUES ('".$post_id."', 'GR', '".$rule_state."', '".$array[$id][$rule_state][1]."', '".$array[$id][$rule_state][2]."');");
  64.                     }
  65.                 }
  66.             }
  67.             //τέλος πήγαινε στον πίνακα wp_woocommerce_per_product_shipping_rules και φτιάξε μια επιπλέον εγγραφή για τις δυσπρόσιτες περιοχές
  68.             if (empty(($wpdb->get_results($wpdb->prepare("SELECT product_id FROM `wp_woocommerce_per_product_shipping_rules` WHERE `product_id` = ".$post_id." AND `rule_postcode` <> '';")))[0]->product_id)) {
  69.                 $wpdb->query("INSERT INTO `wp_woocommerce_per_product_shipping_rules` (`product_id`, `rule_country`, `rule_postcode`, `rule_cost`, `rule_order`) VALUES (".$post_id.", 'GR', '68150, 83104, 30008, 46200, 67200, 34200, 45500, 74052, 51100, 68010, 67064, 70005, 80200, 33053, 72052, 25015, 23062, 24200, 64200, 84005, 23200, 58400, 34001, 85001, 29092, 24011, 30021, 74053, 22028, 21051, 84200, 73500, 47045, 30400, 59200, 23052, 62047, 66200, 84302, 48060, 73005, 43100, 80100, 19015, 63073, 22001, 49083, 70010, 25100, 32150, 34005, 27064, 52051, 81200, 30100, 25006, 44014, 22012, 59150, 70003, 44003, 30002, 44100, 72400, 36100, 84006, 72300, 84702, 33058, 34600, 28086, 70013, 73004, 18020, 85104, 84500, 25008, 33100, 28081, 34009, 29090, 28200, 84001, 83302, 83300, 63081, 37006, 27063, 50400, 24300, 23070, 85900, 83102, 73001, 84002, 34013, 37008, 27052, 19007, 70400, 44002, 64007, 85800, 34003, 24150, 35015, 73014, 27300, 73400, 27061, 70004, 43060, 19012, 49081, 50150, 72053, 47044, 44200, 74150, 42032, 26500, 19014, 32001, 66031, 36080, 42200, 70006, 52052, 61003, 74061, 41500, 84300, 30010, 48200, 62200, 43300, 63085, 71500, 70014, 73011, 70300, 34400, 81401, 24022, 32003, 30017, 50007, 24005, 24004, 24500, 30022, 36071, 27069, 59031, 48300, 49150, 40300, 30015, 37300, 30300, 35009, 13679, 58200, 72200, 60300, 50002, 82103, 81101, 70100, 25200, 23053, 21300, 23051, 84800, 18050, 24001, 34500, 28100, 34008, 63078, 25004, 18030, 27053, 25007, 24008, 83200, 46300, 72150, 73007, 37001, 28300, 34300, 40003, 40200, 32006, 63088, 30019, 22007, 58002, 82150, 21052, 84401, 33200, 85002, 21056, 57006, 52055, 61100, 73006, 53077, 53100, 47047, 32200, 22300, 22150, 35200, 36072, 18040, 81150, 84011, 58500, 35011, 84007, 21250, 27065, 51200, 51030, 64010, 84703, 44013, 49080, 81106, 84004, 81109, 74055, 35010, 27150, 37500, 49084, 60063, 43200, 60150, 83301, 62049, 81500, 27054, 52200, 31082, 85110, 48062, 32009, 85108, 29100, 84501, 38000, 82102, 20200, 70016, 70008, 37100, 35005, 70200, 74060, 85700, 83400, 63100, 84400, 64009, 47150, 40006, 23059, 35006, 58300, 34150, 62042, 27050, 20500, 28080, 22015, 22010, 30004, 72055, 63200, 60065, 19600, 84008, 81300, 85109, 63080, 37005, 61007, 85301, 30009, 81104, 84600, 35003, 24009, 69400, 57012, 64100, 31100, 69300, 81400, 18010, 62300, 47043, 43061, 37003, 81105, 30006, 27056, 53073, 30020, 42150, 82300, 22027, 68400, 23150, 22002, 28084, 24002, 57100, 57011, 84100, 66035, 74051, 43063, 50001, 27066, 50004, 66300, 19100, 67300, 22200, 52050, 64008, 84700, 62041, 33057, 67150, 34015, 84010, 33056, 64004, 68004, 48061, 68002, 59300, 85300, 69200, 21055, 34006, 68006, 62400, 63075, 68200, 30023, 24400, 50010, 20014, 20400, 35002, 22008, 53200, 27200, 50200, 50005, 62055, 57300, 84009, 27051, 49082, 24006, 81107, 27055, 57002, 53070, 85302, 81103, 82104, 35300, 20009, 40100, 53071, 30014, 25001, 62500, 35150, 25003, 69150, 73002, 67062, 38500, 30011, 61200, 58100, 32004, 81108, 85200, 68500, 57021, 68007, 46030, 73003, 23054, 85400, 21059, 32002, 82101, 34007, 64002, 85303, 19023, 50500, 63077, 66033, 37002, 42031, 31084, 84003, 30001, 57014, 63074, 30500, 60200, 73200, 63086, 50300, 34004, 63087, 64003, 83100, 44010, 33052, 61300, 85600, 83103, 85500, 66150, 85101, 33054, 63072, 32300, 32005, 47040, 30200, 57200, 20006, 68300, 35001, 85102, 43150, 44001, 85105, 48100, 18950, 35008, 57500, 59035, 57010, 35012, 68003, 18900, 34002, 85107, 70007, 85111, 81102, 19011, 30012, 19001, 52100, 46100, 43070, 19003', '10', '16');");
  70.             }
  71.             return 0.1234; //Μετά τις εγγραφές ή ανανεώσεις στην βάση, βάλε του και ένα τυπικό βάρος 0.1234 για να δουλέψει το woocommerce
  72.         }else{ //Τώρα: Αν το erp sku είναι μέσα στο αρχείο csv αλλά τελικά έχει βάρος από το ERP, τότε:
  73.             if ($gross >= $net){ //έλεγξε καταρχάς αν το βάρος gross είναι μεγαλύτερο ή ίσο του net
  74.                 return $gross; //αν ΝΑΙ, επέστρεψε το gross
  75.             }else{ //αν ΟΧΙ
  76.                 return $net; //επέστρεψε το net
  77.             }
  78.         }
  79.     } else { //ΑΝ ΤΕΛΙΚΑ, δεν υπάρχει το erp sku στο csv αρχείο, τότε:
  80.         if ($gross >= $net) { //αν το βάρος gross είναι μεγαλύτερο ή ίσο του net
  81.             return $gross; //επέστρεψε το gross
  82.         } else {
  83.             return $net; //αλλιώς επέστρεψε το net
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement