Массовое редактирование
#1
Отправлено 20 Август 2013 - 09:14
Скажите как можно прописать вычисление при массовом редактировании в следующем случае:
- Если меняется поле "Сотрудник" (пользователь) при массовом редактировании и соответствует прописанным условиям-выполнять массовое редактирование у тех карточек, которые соответствуют условиям. Если же какая-то карточка не соответствует прописанным условиям-выводить сообщение с названием этих карточек.
Если меняем просто сотрудника в карточке (без массового редактирования) то эти правила не должны учитываться
#2
Отправлено 20 Август 2013 - 09:33
#3
Отправлено 20 Август 2013 - 11:35
if (($line['Оплачено до']<curdate()) and ($line['Дата последнего комментария']=curdate() - interval 3 month)) $line['Сотрудник']=$line['Менеджер'];Можете подсказать где ошибка?)
syntax error, unexpected T_LNUMBER
#4
Отправлено 20 Август 2013 - 12:04
if (($line['Оплачено до'] < date("Y-m-d 00:00:00")) and ($line['Дата последнего комментария'] == date("Y-m-d 00:00:00", mktime(0,0,0,date("n")-3,date("j"),date("Y")))))
#5
Отправлено 20 Август 2013 - 20:35
Только что-то не работает у меня((
Даты,которые учитываются в вычислении поставила даже 2012 года http://take.ms/agTHV
Меняю менеджера, а поле сотрудник меняться не хочет >.<
if (($line['Оплачено до'] < date("Y-m-d 00:00:00")) and ($line['Дата последнего комментария'] == date("Y-m-d 00:00:00", mktime(0,0,0,date("n")-3,date("j"),date("Y"))))) $line['Сотрудник']=$line['Менеджер'];это же вряд ли связано с тем, кто в коде указано время,а тут у меня нет его нигде?
Причем не срабатывает второе условие, я первое переделала как
if (($line['Оплачено до']) < (date ("Y-m-d")) )Так работает, пытаюсь проверить второе условие-уже не выполняется
Сообщение отредактировал Dinara: 21 Август 2013 - 07:21
#6
Отправлено 21 Август 2013 - 07:37
if (($line['Дата последнего комментария']) == (date("Y-m-d", mktime(0,0,0,date("m")-3,date("d"),date("Y"))))) $line['Сотрудник']=$line['Менеджер'];Убрала время из даты и поменяла символы, потому что у меня же вроде используются даты с нулями..и все равно..(
#7
Отправлено 21 Август 2013 - 09:32
Цитата
Может дело не условии? Попробуйте убрать условие вообще и изменить Менеджера, поменяется ли Сотрудник?
Само условие вроде верно составлено. Время пишется по той причине, что именно так в БД хранится дата без времени. Поэтому убирать и заменять ничего не надо.
#8
Отправлено 21 Август 2013 - 09:36
Цитата
Так у вас в условии "Дата последнего комментария" должна быть равна текущей дате минус 3 месяца, т.е. для сегодня это должно быть 21 мая 2013, для вчера - 20 мая. А на картинке - 16.08.2012.
#9
Отправлено 21 Август 2013 - 09:42
Благодарю)) Буду допиливать))
#10
Отправлено 21 Август 2013 - 09:46
#11
Отправлено 21 Август 2013 - 09:50
#12
Отправлено 21 Август 2013 - 09:57
CbCoder (21 Август 2013 - 09:50) писал:
Простите, упустила первый ответ..да,теперь все отлично работает))
А если нужно указать не просто 3 месяца,а например за 3 рабочих дня?
#13
Отправлено 21 Август 2013 - 09:59
Цитата
Не совсем понял.
#14
Отправлено 21 Август 2013 - 10:04
date("d")-3Что будет означать-за 3 дня.
А если у меня условие не просто за 3 дня, а именно за 3 рабочих дня, без учета выходных?
Сообщение отредактировал Dinara: 21 Август 2013 - 10:04
#15
Отправлено 21 Август 2013 - 10:23
#16
Отправлено 21 Август 2013 - 13:07
if (($line['Смена менеджера']=="Да") and ( $line['Дата смены менеджера']) <= (date("Y-m-d", mktime(0,0,0,date("m"),date("d")-4,date("Y")))))И еще что-то добавить, где проверяются рабочие дни?)
#17
Отправлено 21 Август 2013 - 13:13
Цитата
Описание алгоритма боюсь выходит за рамки бесплатной техподдержки (требуется время для написания).
#18
Отправлено 21 Август 2013 - 13:42
И еще вопрос, мне нужно,чтобы не учитывались карточки, где дата меньше 01.01.2006, будет ли корректно прописать следующим образом:
if (($line['Дата контакта'] )>= (date("01.01.2006")))
Сама дата контакта в системе прописывается Дата контакта : 18.07.2013 08:15
Сообщение отредактировал Dinara: 21 Август 2013 - 13:43
#19
Отправлено 21 Август 2013 - 14:18
Цитата
if (($line['Дата контакта'] )>= (date("01.01.2006")))
Нет.
if ($line['Дата контакта'] >= "2006-01-01 00:00:00")
#20
Отправлено 21 Август 2013 - 14:37
Цитата
Можно попробовать в интернете поискать.
В принципе, подумал, в данном случае наверное есть более простой вариант, без проходов:
if (($line['Смена менеджера']=="Да") and ( ((date("w")==1 or date("w")==2 or date("w")==3) and $line['Дата смены менеджера'] <= date("Y-m-d", mktime(0,0,0,date("m"),date("d")-5,date("Y")))) or // если понедельник, вторник или среда - отнимаем 5 дней (2 вых. + 3 раб.) ((date("w")==4 or date("w")==5) and $line['Дата смены менеджера'] <= date("Y-m-d", mktime(0,0,0,date("m"),date("d")-3,date("Y")))) // если четверг или пятница - отнимаем 3 дня ))
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных