Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
0.00% |
0 / 53 |
|
0.00% |
0 / 2 |
CRAP | n/a |
0 / 0 |
|
| clientes_saldos_grid | |
0.00% |
0 / 41 |
|
0.00% |
0 / 1 |
132 | |||
| actualiza_clientes_saldos | |
0.00% |
0 / 12 |
|
0.00% |
0 / 1 |
20 | |||
| 1 | <?php |
| 2 | |
| 3 | function clientes_saldos_grid($andWhere='',$orderby='',&$sumasGridServer=array()) |
| 4 | { |
| 5 | //$arr=array(); |
| 6 | global $vx_debug; |
| 7 | global $gIAParametros; |
| 8 | |
| 9 | $orderbysplit = explode("/**#LIMIT#**/", $orderby); |
| 10 | $limit = $limitsql = array_key_exists(1, $orderbysplit) ? $orderbysplit[1] : ''; |
| 11 | |
| 12 | if(strlen($limit)) |
| 13 | { |
| 14 | $limit = vx_trim(str_replace("LIMIT","",$limit)); |
| 15 | $limitsplit = explode(",",$limit); |
| 16 | } |
| 17 | |
| 18 | /*if($sumasGridServer['iaGridInicial'] == 'NO') |
| 19 | { |
| 20 | $orderby = $orderbysplit[0]; |
| 21 | }*/ |
| 22 | |
| 23 | if(!empty($andWhere)) |
| 24 | { |
| 25 | if(strpos($andWhere, " AND (") === 0) |
| 26 | $andWhere = substr($andWhere,5); |
| 27 | |
| 28 | $andWhere = str_replace("clientes_saldos_cat.",'',$andWhere); |
| 29 | |
| 30 | /** Aqui reemplazo los campos ambiguos **/ |
| 31 | $cyTN_arr = camposyTablasNormalizadas('clientes_saldos'); |
| 32 | $patterns = array_keys($cyTN_arr[0]['clientes_saldos']); |
| 33 | $replacements = array_values($cyTN_arr[0]['clientes_saldos']); |
| 34 | |
| 35 | foreach($patterns as $k=>$v) |
| 36 | $patterns[$k] = "/\\b$v\\b/"; |
| 37 | |
| 38 | $andWhere = preg_replace($patterns,$replacements,$andWhere); |
| 39 | //$orderby = preg_replace($patterns,$replacements,$orderby); |
| 40 | |
| 41 | /** ** ** **/ |
| 42 | //$andWhere = " $andWhere AND "; |
| 43 | |
| 44 | |
| 45 | //ia_query("INSERT INTO dime (script,dime) VALUES ('sql',".strit($tmp."-".$andWhere).")"); |
| 46 | } |
| 47 | |
| 48 | //VCA 01-03-2021 Leemos el tipo de cambio y lo actualizamos en clientes_saldos_cat. Los campos de saldo se calculan automáticamente. |
| 49 | $tc = obten_tc_live(); |
| 50 | $tc_usado = $tc->tc; |
| 51 | ia_query("UPDATE cliente SET tipo_cambio='$tc_usado'"); |
| 52 | |
| 53 | |
| 54 | $sql = "SELECT cliente_id, nombre, |
| 55 | tienda_id, |
| 56 | SUM(saldo_cheques_pesos) AS saldo_cheques_pesos, |
| 57 | SUM(saldo_pagares_usd) AS saldo_pagares_usd, |
| 58 | SUM(saldo_vales_pesos) AS saldo_vales_pesos, |
| 59 | SUM(saldo_vales_usd) AS saldo_vales_usd, |
| 60 | MAX(ultima_compra) AS ultima_compra, |
| 61 | MAX(ultimo_pago) AS ultimo_pago, |
| 62 | SUM(saldo_cheques_usd) AS saldo_cheques_usd, |
| 63 | SUM(saldo_pagares_pesos) AS saldo_pagares_pesos, |
| 64 | SUM(cuantos_cheques) AS cuantos_cheques, |
| 65 | SUM(cuantos_pagares) AS cuantos_pagares, |
| 66 | SUM(cuantos_vales) AS cuantos_vales, |
| 67 | MIN(cheque_mas_antiguo) AS cheque_mas_antiguo, |
| 68 | MIN(pagare_mas_antiguo) AS pagare_mas_antiguo, |
| 69 | MIN(vale_mas_antiguo) AS vale_mas_antiguo, |
| 70 | '$tc_usado' as tipo_cambio, |
| 71 | SUM(saldo_compras_pesos) AS saldo_compras_pesos, |
| 72 | SUM(saldo_compras_usd) AS saldo_compras_usd, |
| 73 | SUM(cuantos_compras) AS cuantos_compras, |
| 74 | MIN(compra_mas_antigua) AS compra_mas_antigua |
| 75 | /** ##get_select()## **/ |
| 76 | FROM clientes_saldos_cat "; |
| 77 | |
| 78 | $andWhere = empty($andWhere) ? "" : " WHERE " . $andWhere; |
| 79 | $andWhere.= " GROUP BY cliente_id "; |
| 80 | |
| 81 | $fin_arr=ia_sqlArrayIndx($sql.$andWhere.$orderby); |
| 82 | |
| 83 | |
| 84 | // Para el cache // |
| 85 | $sql1 = array(); |
| 86 | // ia_query("CREATE TABLE IF NOT EXISTS clientes_saldos_live LIKE clientes_saldos_cat"); |
| 87 | // ia_query("TRUNCATE TABLE clientes_saldos_live"); |
| 88 | $sql1[] = "CREATE TABLE IF NOT EXISTS clientes_saldos_live LIKE clientes_saldos_cat"; |
| 89 | $sql1[] = "TRUNCATE TABLE clientes_saldos_live"; |
| 90 | // ia_query("ALTER TABLE cuentat_mov_live ENGINE = MEMORY"); |
| 91 | //ia_query("ALTER TABLE cuentat_mov_tmp DROP INDEX consul_movs"); |
| 92 | foreach($fin_arr as $k => $cm) |
| 93 | { |
| 94 | $sql1[] = ia_insert("clientes_saldos_live", $cm, [],'', true); |
| 95 | //$sql1[$k+1] = str_replace("clientes_saldos_cat", "clientes_saldos_live", $sql1[$k+1]); |
| 96 | } |
| 97 | //ia_query("ALTER TABLE cuentat_mov_tmp ADD INDEX consul_movs (banco_cuenta_mov_link_id, fecha, alta_db, contra_mov_id, app_origen, cuentaT_id, tienda_id) USING BTREE;"); |
| 98 | |
| 99 | ia_transaction($sql1); |
| 100 | |
| 101 | |
| 102 | if(strlen($limit)) { |
| 103 | |
| 104 | $sumasGridServer['rows'] = $limitsplit[1]; |
| 105 | $sumasGridServer['total_records'] = sizeof($fin_arr); |
| 106 | $fin_arr = array_splice($fin_arr, $limitsplit[0], $limitsplit[1]); |
| 107 | } |
| 108 | else{ |
| 109 | $sumasGridServer['rows'] = $limit; |
| 110 | $sumasGridServer['total_records'] = sizeof($fin_arr); |
| 111 | } |
| 112 | |
| 113 | ia_query("INSERT INTO clientes_saldos_live(cliente_id, saldo_cliente_usd, saldo_cliente, saldo_cliente_moneda_id_calc) |
| 114 | SELECT cliente_id, SUM(saldo_cliente_usd) AS saldo_cliente_usd, SUM(saldo_cliente) AS saldo_cliente, MAX(saldo_cliente_moneda_id_calc) AS saldo_cliente_moneda_id_calc FROM (SELECT cliente_id, SUM((`saldo_cheques_pesos` / $tc_usado) + `saldo_cheques_usd` + (`saldo_pagares_pesos` / $tc_usado) + `saldo_pagares_usd` - (`saldo_vales_pesos` / $tc_usado) - `saldo_vales_usd`) AS saldo_cliente_usd, |
| 115 | if((SUM(`saldo_cheques_pesos`) > 0 OR SUM(`saldo_pagares_pesos`) > 0 OR SUM(`saldo_vales_pesos`) > 0) AND (SUM(`saldo_cheques_usd`) > 0 OR SUM(`saldo_pagares_usd`) > 0 or SUM(`saldo_vales_usd`) > 0),SUM((`saldo_cheques_pesos` / $tc_usado) + `saldo_cheques_usd` + (`saldo_pagares_pesos` / $tc_usado) + `saldo_pagares_usd` - (`saldo_vales_pesos` / $tc_usado) - `saldo_vales_usd`),if(SUM(`saldo_cheques_pesos`) > 0 or SUM(`saldo_pagares_pesos`) > 0 or SUM(`saldo_vales_pesos`) > 0,SUM(COALESCE(`saldo_cheques_pesos`,0) + COALESCE(`saldo_pagares_pesos`,0) - COALESCE(`saldo_vales_pesos`,0)),SUM(COALESCE(`saldo_cheques_usd`,0) + COALESCE(`saldo_pagares_usd`,0) - COALESCE(`saldo_vales_usd`,0)))) AS saldo_cliente, if((SUM(`saldo_cheques_pesos`) > 0 or SUM(`saldo_pagares_pesos`) > 0 or SUM(`saldo_vales_pesos`) > 0 or SUM(`saldo_compras_pesos`) > 0) and (SUM(`saldo_cheques_usd`) > 0 or SUM(`saldo_pagares_usd`) > 0 or SUM(`saldo_vales_usd` > 0) or SUM(`saldo_compras_usd`) > 0),3,if(SUM(`saldo_cheques_pesos`) > 0 or SUM(`saldo_pagares_pesos`) > 0 or SUM(`saldo_vales_pesos`) > 0 or SUM(`saldo_compras_pesos`) > 0,1,2)) AS saldo_cliente_moneda_id_calc |
| 116 | FROM clientes_saldos_cat GROUP BY cliente_id) AS lol GROUP BY cliente_id |
| 117 | ON DUPLICATE KEY UPDATE saldo_cliente_usd = VALUES(saldo_cliente_usd), saldo_cliente = VALUES(saldo_cliente), saldo_cliente_moneda_id_calc = VALUES(saldo_cliente_moneda_id_calc);"); |
| 118 | //$sumasGridServer['iaarr_md5_solosumas'] = "cuentat_mov_tmp"; |
| 119 | |
| 120 | if($vx_debug) |
| 121 | { |
| 122 | ia_errores_a_dime(); |
| 123 | |
| 124 | //$time_elapsed_secs = microtime(true) - $start; |
| 125 | //echo "time_elapsed_secs: $time_elapsed_secs"; |
| 126 | global $gWebDir; |
| 127 | $myFile = "C:\\wamp\\www\\$gWebDir\\backoffice\\txt\\clientes_saldos_grid.txt"; |
| 128 | |
| 129 | $fh = fopen($myFile, 'w') or die("can't open file"); |
| 130 | |
| 131 | $bleh = "\r\n\r\nfin_arr: $sql $andWhere $orderby"; |
| 132 | |
| 133 | fwrite($fh, $bleh); |
| 134 | fclose($fh); |
| 135 | } |
| 136 | //ia_errores_a_dime(); |
| 137 | return $fin_arr; |
| 138 | } |
| 139 | |
| 140 | /** VCA regenera el saldo de los clientes */ |
| 141 | function actualiza_clientes_saldos($cliente_id = null){ |
| 142 | |
| 143 | $sql_cliente_id = "SELECT cliente_id FROM cliente WHERE vale='Active'" . (empty($cliente_id) ? "" : " AND cliente_id = ".strit($cliente_id)); |
| 144 | |
| 145 | $arr_cliente_id = ia_sqlArray($sql_cliente_id, "cliente_id"); |
| 146 | |
| 147 | $sql = ""; //array(); |
| 148 | // $sql[] = "SET @TRIGGER_DISABLED = 0;"; |
| 149 | |
| 150 | foreach ($arr_cliente_id as $k => $v) { |
| 151 | // $sql = array(); |
| 152 | // $sql[] = "SET @TRIGGER_DISABLED = 0;"; |
| 153 | $myLock = new ProcessLock(); |
| 154 | $s = md5("actualiza_cliente_resumen_$k"); |
| 155 | $gotLock = $myLock->aquire($s); |
| 156 | |
| 157 | if(!$gotLock) |
| 158 | continue; |
| 159 | |
| 160 | $sql = "CALL actualiza_cliente_resumen('$k');"; |
| 161 | //echo "<pre>" . print_r($sql, true) . "</pre>"; |
| 162 | // ia_transaction($sql); |
| 163 | ia_query($sql); |
| 164 | $myLock->release(); |
| 165 | } |
| 166 | //ia_transaction($sql); |
| 167 | |
| 168 | |
| 169 | return true; |
| 170 | } |