- Форум CRM программы Клиентская база
- → Публикации aleks.goodcolor
Публикации aleks.goodcolor
13 публикаций создано aleks.goodcolor (учитываются публикации только с 14-Май 23)
#31100 доп действие добавление в подтаблицу
Отправлено от aleks.goodcolor в 06 Апрель 2016 - 09:42 in Как это сделать
Только нужно понимать где поле связи таблицы с подтаблицей? Это поле сотрудник?
#31363 Настройка чата КБ
Отправлено от aleks.goodcolor в 27 Апрель 2016 - 12:37 in Как это сделать
#31367 Настройка чата КБ
Отправлено от aleks.goodcolor в 27 Апрель 2016 - 16:24 in Как это сделать
#31067 Срабатывание вычисления после удаления записи
Отправлено от aleks.goodcolor в 31 Март 2016 - 09:57 in Как это сделать
#31073 Срабатывание вычисления после удаления записи
Отправлено от aleks.goodcolor в 31 Март 2016 - 15:26 in Как это сделать
Но сейчас столкнулся еще с одной проблемой.
Есть таблица Расход и подтаблица позиции расхода. В табл. Расход стоит вычисление:
if ($event['type']=='delete') { if ($line['Статус записи']==2) data_delete(90, EVENTS_ENABLE, 'f1146=',$line['ID']); // delete all subrecords } else { if ($line['Статус записи']==2) data_delete(90, EVENTS_ENABLE, 'status=2 and f1146=',$line['ID']); // delete old trash subrecords data_update(90, EVENTS_ENABLE, array('status'=>$line['Статус записи']), 'status=',$event['changed'][1126]['old'],' and f1146=',$line['ID']); record_sublines_status_log(90, 1146, $line); }Оно удаляет из подтаблицы все записи при удалении основной записи. Но почему-то при этом $event[type] пустой. Подскажите пожалуйста что не так с этим вычислением? Почему событие может не срабатывать?
#31050 Срабатывание вычисления после удаления записи
Отправлено от aleks.goodcolor в 30 Март 2016 - 11:20 in Как это сделать
#31061 Срабатывание вычисления после удаления записи
Отправлено от aleks.goodcolor в 30 Март 2016 - 13:20 in Как это сделать
if($line['Основание']['raw']!=NULL && $line['Основание']['Тип']) { $type_action = $line['Основание']['Тип']; # тип приход или расход $line['Сумма'] = $line['Цена'] * $line['Кол-во']; # подсчет суммы расхода $line['Ед. изм.'] = $line['Наименование']['raw']; # подстановка ед.изм # Поиск позиций расхода $sqlQuery = "SELECT SUM(`f1151`) AS `amount` FROM `".DATA_TABLE."90` WHERE `status`<>'2' AND `f1146`='".$line['Основание']['raw']."'"; $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); $row = sql_fetch_assoc($result); $line['Основание']['Сумма'] = $row['amount']; # установка суммы расхода if (!$line['Наименование']['raw']) return; # проверка на пустое поле связи # Доп. инфо в партии if($type_action=='Расход') { if(!$line['Основание']['Путь']) $osnovanie = $line['Основание']['Основание расхода']." по счету <a href=\"/view_line2.php?table=43&line=".$line['Основание']['№ счёта']['ID']."\">№".$line['Основание']['№ счёта']['Номер']."</a> (<a href=\"/view_line2.php?table=42&line=".$line['Основание']['Покупатель']['ID']."\">".$line['Основание']['Покупатель']['Название']."</a>) <br><a href=\"/view_line2.php?table=88&line=".$line['Основание']['ID']."\"> Расход №".$line['Основание']['Номер']."</a>"; else $osnovanie = $line['Основание']['Основание расхода']; } elseif($type_action=='Приход') { if(!$line['Основание']['Путь']) $osnovanie = $line['Основание']['Основание расхода']." от поставщика <a href=\"/view_line2.php?table=351&line=".$line['Основание']['Поставщик']['ID']."\">".$line['Основание']['Поставщик']['Наименование']."</a><br><a href=\"/view_line2.php?table=87&line=".$line['Основание']['ID']."\">Приход №".$line['Основание']['Номер']."</a>"; else $osnovanie = $line['Основание']['Основание расхода']; } # Поиск позиции на складе $sqlQuery = "SELECT `id` FROM `".DATA_TABLE."85` WHERE `status`=0 AND `f1096`='".$line['Наименование']['raw']."' AND `f10420`='".$line['Основание']['Тип расхода']."' AND `f10510`='".$line['Основание']['Место']['ID']."'";//выборка на складе $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); if($row = sql_fetch_assoc($result)) { # поиск партии $sqlQuery = "SELECT COUNT(*) AS `cnt` FROM `".DATA_TABLE."86` WHERE `status`='0' AND `f12290`='".$ID."'"; $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); $subrow = sql_fetch_assoc($result); if($subrow['cnt']) # обновляем партию если надо { $sqlQuery = "UPDATE `".DATA_TABLE."86` SET `f1109`='".$line['Цена']."', `f1110`='".$line['Кол-во']."',`f12000`='".$line['Основание']['Путь']."',`f12320`='".$osnovanie."' WHERE `f12290`='".$ID."' "; sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); } else # добавляем партию { $sqlQuery = "INSERT INTO `".DATA_TABLE."86` (`user_id`, `add_time`, `status`, `f1106`, `f1108`, `f1109`, `f1110`, `f11990`,`f12290`, `f1111`,`f12000`,`f12320`) VALUES ('".$user['id']."', '".date("Y-m-d H:i:s")."', '0', '".$row['id']."', '".date("Y-m-d 00:00:00")."', '".$line['Цена']."', '".$line['Кол-во']."','".$type_action."', $ID, '".$line['Основание']['Номер']."','".$line['Основание']['Путь']."','".$osnovanie."')"; sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); } if ($event['type']=='delete') $deleteCond = " AND `pos_rash`.`id`<>".intval($ID); # условие при удалении позиции # выборка и подсчет нужных позиций прихода $sqlQuery = "SELECT SUM(`f1150`) AS `d_balance`, SUM(`f1151`) AS `d_amount` FROM `".DATA_TABLE."90` AS `pos_rash`, `".DATA_TABLE."88` AS `rash` WHERE `pos_rash`.`status`='0' AND `rash`.`status`<>'2' AND `f1147`='".$line['Наименование']['raw']."' AND `rash`.`id` = `f1146` AND `f12260` = '".$line['Основание']['Тип расхода']."' AND `f12270` = '".$line['Основание']['Место']['ID']."' AND `f18740` = 'Приход' $deleteCond"; $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); $p_row = sql_fetch_assoc($result); if ($p_row['p_balance'] == NULL) $p_balance = 0; # получили кол-во прихода (общее) else $p_balance = $p_row['p_balance']; if ($p_row['p_amount'] == NULL) $p_amount = 0; # получили сумму прихода (общее) else $p_amount = $p_row['p_amount']; # поиск позиций расхода $sqlQuery = "SELECT SUM(`f1150`) AS `d_balance`, SUM(`f1151`) AS `d_amount` FROM `".DATA_TABLE."90` AS `pos_rash`, `".DATA_TABLE."88` AS `rash` WHERE `pos_rash`.`status`='0' AND `rash`.`status`<>'2' AND `f1147`='".$line['Наименование']['raw']."' AND `rash`.`id` = `f1146` AND `f12260` = '".$line['Основание']['Тип расхода']."' AND `f12270` = '".$line['Основание']['Место']['ID']."' `f18740` = 'Расход' $deleteCond"; $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); $d_row = sql_fetch_assoc($result); if ($d_row['d_balance'] == NULL) $d_balance = 0; else $d_balance = $d_row['d_balance']; if ($d_row['d_amount'] == NULL) $d_amount = 0; else $d_amount = $d_row['d_amount']; $w_balance = $p_balance - $d_balance; # остаток из разницы $w_amount = $p_amount - $d_amount; # сумма из разницы # поиск позиций прихода $sqlQuery = "SELECT `f1140`, `f1139` FROM `".DATA_TABLE."89` AS `pos_pr`, `".DATA_TABLE."87` AS `pr` WHERE `pr`.`status`<>'2' AND `pos_pr`.`status`<>'2' AND `f1137`='".$line['Наименование']['raw']."' AND `pr`.`id`= `f1136` AND `f10580` = '".$line['Основание']['Тип расхода']."' AND `f12280` = '".$line['Основание']['Место']['ID']."' AND `f18740` = 'Расход' ORDER BY `pos_pr`.`id` DESC"; $s_res = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); $prices = array(); while ($s_row = sql_fetch_assoc($s_res)) { $prices[$s_row['f1149']] += $s_row['f1150']; if (array_sum($prices) >= $w_balance) { $prices[$s_row['f1149']] = $prices[$s_row['f1149']] - (array_sum($prices) - $w_balance); break; } } foreach ($prices AS $one_price => $one_quant) { $price_list .= form_local_number($one_price, "10/2"); if (count($prices) > 1) $price_list .= " - $one_quant ".$line['Наименование']['Ед. изм.']."\r\n"; $last_amount += $one_price * $one_quant; } if (!array_sum($prices)) $price_list = ''; $sqlQuery = "UPDATE `".DATA_TABLE."85` SET `f4181`='".$line['Наименование']['raw']."', `f1096`='".$line['Наименование']['raw']."', `f1097`='".$line['Наименование']['raw']."', `f1101`='$last_amount', `f1100`='$w_balance', `f1098`='$price_list' WHERE `id`='".$row['id']."' AND `f10420`='".$line['Основание']['Тип расхода']."' AND `f10510`='".$line['Основание']['Место']['ID']."'"; sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); } }
#31056 Срабатывание вычисления после удаления записи
Отправлено от aleks.goodcolor в 30 Март 2016 - 11:51 in Как это сделать
#31047 Срабатывание вычисления после удаления записи
Отправлено от aleks.goodcolor в 30 Март 2016 - 11:01 in Как это сделать
Удаление чаще всего происходит в подтаблице, иногда через доп. действие.
#31710 Сделать два новых отчета
Отправлено от aleks.goodcolor в 30 Июнь 2016 - 17:10 in Как это сделать
#28669 Добавить собственную маску ввода на поле при добавлении в таблицу
Отправлено от aleks.goodcolor в 03 Июль 2015 - 09:29 in Как это сделать
2. Файл js c описанием к какому полю будет применена маска
3. Чтобы подключить файл на все страницы кб прийдется переделывать template? То есть при каждом обновлении ревизии нужно будет обновлять файл.
#31239 Форма подписки
Отправлено от aleks.goodcolor в 18 Апрель 2016 - 10:41 in Как это сделать
Создать внешнюю форму не проблема, но как сделать чтобы если e-mail уже есть в базе то его не добавлять по новой?
Как сделать страницу управления - например чтобы пользователь сам мог обновить свой e-mail или тематику рассылки? Видел что для обновления записи нужно использовать хеш но можно ли его получать в автоматическом режиме?
#31296 Форма подписки
Отправлено от aleks.goodcolor в 20 Апрель 2016 - 15:51 in Как это сделать
- Форум CRM программы Клиентская база
- → Публикации aleks.goodcolor