<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Коллеги, прошу Вас оставлять комментарии и отзывы о прочитанной статье. Плюсы также приветствуются 🙂 Спасибо.
Оформлено аккуратненько, почитаем на досуге:)
С нетерпением жду Ваших отзывов, спасибо.
(0) за овердрафт что-нибудь делали?
(0) за овердрафт что-нибудь делали?
Не понял вопрос.
(5) если денег на счете нет, банк может разрешить уйти в минус, но за это будет потом брать процент. такая система кредитования называется овердрафтом. как бы инструмент, закрывающий кассовые разрывы
Теперь понял вопрос. Собственно говоря овердрафт, как Вы правильно заметили, так же «стоит денег», причем как правило затраты на овердрафт сопоставимы с кредитом. Конечно овердрафт поможет решить текущую проблему по срочному платежу, но его нельзя назвать «панацеей» от «кассовых разрывов»
Добавлю то, что в типовой конфигурации есть доп.право «Разрешить превышение свободного остатка денежных средств» им определяется, будет ли право у пользователя на превышение остатка
Однозначно «+». Есть вопрос, есть случаи, когда надо провести заявку, когда бюджет подразделения израсходован. Например, сгорел АРМ или внеплановая смена ЭЦП связи со сменой руководителя, согласно схеме заявка будет записана. Разработана ли схема проведения таких заявок? Есть ли возможность кредитования у других подразделений?
Оформленно красиво и читабельно. Но на практике все по другому: например есть крупная сеть (наш покупатель) у него по договору (а их может быть несколько с разными компаниями и разными отсрочками) отсрочка платежа 21 день. т.е она выбирает товар в течение например 10 дней на несколько миллионов, то как мы можем запланировать поступление ДС если мы не знаем когда она оплатить в течение 21 дня? Тем самым создается мнимость планирования.
На мой взгляд, вы: 1) упустили из вида подсистему бюджетирования, ведь уже при составлении заявки на расход ДС, система способна в подсистеме бюджетирования контролировать превышения бюджета. 2) Отчет ведомость по расчетам с контрагентами. наделен у вас мистическими свойствами, а ведь это единственный отчет по взаиморасчетам который показывает план. 3) Ну и упустили само планирование ДС. Перефразируя вышесказанное, конструктивная критика статьи следующая не раскрыта тема связи оперативного плаирования ДС с другими подсистемами программы. Не полностью раскрыта тема оперативного планирования ДС.
За статью однозначный плюс. Пример, для всех, как делать проекты. Сначала описать, что есть. Наложить на ис. И только потом решать о необходимости доработки.
(7)овердрафт как раз предназначен для увеличения оборотных средств, т.е. для решения проблемы «кассовых разрывов», почитайте хотя бы определение в любом словаре. почему вы так не считаете, непонятно…
(9) nanik, Если бюджет подразделения израсходован, то либо дается право на проведение платежей сверх утвержденного бюджета, это право дается конкретному сотруднику (имеющему на то полномочия), либо утверждает. Схемы кредитования у других подразделений нет, сейчас мы продумываем схему, при которой если в отчетном периоде №1 у подразделения остались не выбранные суммы, то остаток переходит на период №2 с нарастающим итогом.
(10) Confucius, полностью с Вами согласен, что спланировать на 100% движение ДС не возможно, это утопия, в случае реализации такого сценария, компания была бы «королем» в своей области 🙂 Я бы рекомендовал Вам в плане указывать крайнюю дату поступления платежа, это было бы похоже на пессимистичный сценарий в части дат оплаты.
Так как статья озаглавлена «…планирование..», то мое замечание может быть и не к месту, но все же.
Наш опыт планирования движения ДС наталкивался на следующую «подводную часть айсберга»: погашение кредиторской задолженности, не вошедшей в планирование.
Во-первых: кредиторка была до введения подсистемы планирования на фирме и ее надо гасить. А ее статьи уже «канули в Лету».
Во-вторых: точно также, как ДО введения системы Заявок на расходование ДС, так и ПОСЛЕ, появлялись накладные, особенно на услуги, которые не проходили по Заявкам. А где-то через год… появлялся судебный иск к фирме за неуплату.
В-третьих, тот вариант, который упомянут в посте №10.
Вот такие «пирожки с котятами»…
(11) i_volodin, Спасибо Вам за конструктивную критику. Отвечу:
1) упустили из вида подсистему бюджетирования, ведь уже при составлении заявки на расход ДС, система способна в подсистеме бюджетирования контролировать превышения бюджета.
Да, действительно о связи подсистемы операционного планирования с бюджетированием лишь упомянул, думаю это будет темой новой статьи.
2) Отчет ведомость по расчетам с контрагентами. наделен у вас мистическими свойствами, а ведь это единственный отчет по взаиморасчетам который показывает план.
Да, действительно, следовало бы подробнее расписать
3) Ну и упустили само планирование ДС.
Перефразируя вышесказанное, конструктивная критика статьи следующая не раскрыта тема связи оперативного плаирования ДС с другими подсистемами программы. Не полностью раскрыта тема оперативного планирования ДС.
Спасибо.
(13) nicxxx, в ответе я сказал, что » Конечно овердрафт поможет решить текущую проблему по срочному платежу». В своей статье, в первом разделе я писал: «При возникновении «кассового разрыва» компании приходится прибегать к различным мерам по их устранению, например: привлечение банковских кредитов, займов, срочная продажа ликвидных активов и т.д. Несмотря на принятые меры, указанная ситуация так или иначе пагубно отразится на благосостоянии компании.». Таким образом я пытаюсь обозначить пути минимизации привлечения дополнительных средств, путем применения инструмента УПП (подсистема операционного планирования).
(15) PAVI, Спасибо за обмен опытом, очень полезно услышать. Вы писали: «Во-первых: кредиторка была до введения подсистемы планирования на фирме и ее надо гасить. А ее статьи уже «канули в Лету».»
Тут лишь остается уповать на то, что при планировании будут учтены текущие задолженности.
«Во-вторых: точно также, как ДО введения системы Заявок на расходование ДС, так и ПОСЛЕ, появлялись накладные, особенно на услуги, которые не проходили по Заявкам. А где-то через год… появлялся судебный иск к фирме за неуплату.»
Мне кажется это из разряда первого высказывания, нужно учитывать текущую ситуацию.
(19)
я бы сказал: нужно вести учет, раз уж взялись 🙂
(20) tango, Согласен.
(18) готов поспорить насчет того, что кредиты ухудшают благосостояние компании. фактически наоборот, даже способствуют улучшению.
(22) nicxxx, можете ли Вы привести аргументы в пользу привлечения кредита (при отсутствии потребности в таковом) взамен грамотного планирования движения денежных средств. Если есть возможность спланировать движение ДС таким образом, чтобы не было возможности кредитоваться, то это однозначно плюс, туи спорить бессмысленно. Привлечение кредита помогает в развитии компании, если его привлечение (кредита) целесообразно и обосновано, а так же объем кредита тоже должен быть обоснован. Например: компания решила построить здание, общий объем средств, требуемый для строительства: 1 млн. Компании выгоднее взять сразу не весь 1 млн, а частями, по мере необходимости, в таком случае проценты будут начисляться с отсрочкой, т.е. с момента получения кредита, это так же пример грамотного планирования движения ДС.
(22) nicxxx, пример из жизни: у человека есть последние 5000 руб. до зарплаты, зарплата через 3 дня. До зарплаты еще нужно купить продуктов (2000) и заплатить за проезд на общественном транспорте (200). При этом у человека есть мечта купить новый телефон, стоимостью 4000 руб. в ближайшее время. Вопрос: когда лучше произвести покупку телефона? До зарплаты и далее взять кредит, чтобы купить продукты и т.д. на которые будет уже не хватать или после зарплаты? 🙂
Про физлиц здесь разговор не идет, хотя все знают, что есть кредитки с грейсом, т.е. как минимум, благосостояние физлица не ухудшится, если он из грейса не вылетит.
аргументы в пользу привлечения кредита юрлицом следующие. кстати раз уж начали речь об овердрафте, то про него и продолжим.
организация имеет товарооборот с циклом 3 месяца. договаривается с банком о возобновляемой кредитной линией, берет кредит 1млн на закупку товара, 900тыс оплачивает поставщику. аренда, налоги, зарплата, прочие поставщики — все это надо платить все 3 месяца пока будет товар будет ехать в организацию, лежать на складе, продаваться. где взять деньги? один из выходов — овердрафт. пусть это будет еще 1 млн. далее, чтобы хватило денег на все вышеперечисленные платежи в следующем периоде, какую надо сделать наценку? минимум 100%, чтобы хватило на следующую партию товара, и еще 100% чтобы покрыть издержки обращения. и еще ХХ% чтобы получить прибыль, но где гарантия, что эта цена в итоге будет конкурентоспособной?
(25) nicxxx, прошу Вас учесть, что мы с Вами говорим не много о разных вещах. Еще раз обращу Ваше внимание: я писал в статье, что нужно стараться использовать все доступные инструменты, если есть возможность не брать кредит для покрытия операционных платежей. Кредит оправдан и необходим для развития бизнеса, но кредит так же имеет свою «стоимость», есть такое понятие «Стоимость привлечения капитала». Так вот в случае с операционным планированием, стоимость привлечения будет возможно ниже, чем привлечение кредита.
с этим согласен
Спасибо автору, статья полезная особенно понравилась схемка очень информативно.
Такой вопрос, если заявка будет отклонена где то в середине процесса, то необходимо создавать новую ?? (многим клиентам эта линейность не нравиться).
И еще какова средняя скорость прохождения заявки до статуса утверждена и признака разрешить оплату.
На тех предприятиях, где мы внедряли и дорабатывали данную подсистему, то работает тот принцип, что нужно создавать новую. Один раз дорабатывали механизм, запрещающий вводить заново заявку, но естественно в зависимости от условия, делалось это, чтобы не «пропихивали» заявки всеми способами.
Скорость прохождения заявки зависит от:
1. Маршрута. Есть маршруты с 1-им участником, есть с 4-5 участниками.
2. Срочности заявки
3. Статьи ДДС (читай «от менеджера направления»)
Так что бывает от 5-10 минут и до суток. Бывает что заявка не оплачивается и в итого она закрывается по концу месяца, т.к. не актуальна больше и компания «пережила» и без её оплаты.
Хорошая статья. Насколько похожи в этом плане УПП и КА?
Статья хорошая. Флаг «Включать в платежный календарь» нужно ставить на самом последнем этапе согласования заявок. А пользоваться удобнее не отчетом «Платежный календарь», а отчетом «Платежный календарь с учетом заказов».
Статья хорошая. Наткнулся на данную статью в поиске решения следующей проблемы. Финансисты решили задействовать платежный календарь. Но наткнулись на след особенность. По заказу покупателя делается ППДС, например в начале декабря сделали ППДС с плановым поступлением в начале марта, например 01.03.2015. Но в конце декабря что то сорвалось и , например 19 декабря этот документ закрывается документом «Закрытие ППДС». В итоге в регистре ППДС два движения от 19.12.2014 с минусом, и от 01.03.2015 с плюсом. В отчете «Платежный календарь» получаем остаток на начало сегодняшнего дня 27.01.2015 минусовой. В статье не увидел отражения этой особенности отчета. Кто как решал данную проблему? То ли отчет переделывать, то ли подписку делать, чтобы дату в ППДС корректировать на дату документа закрытия.
(32) Els11, Спасибо за оценку. С данной проблемой не сталкивались. Мне кажется, что проще переделать отчет, т.к. типовой отчет скудный.
Добрый день!
Не могу понять смысл применения отчета «Платежный календарь».
У меня плановое поступление денежных средств (например, 01 числа в размере 1000 руб), есть плановый расход (2 числа — 100 руб, 3 — 100 руб, 4 — 100 руб). В отчете «Платежный календарь» я прекрасно вижу по дням когда у меня возможен кассовый разрыв.
Теперь у меня прошло фактическое поступление денежных средств (1 числа — 1000 руб). В отчете «Платежный календарь» 2 числа возникает кассовый разрыв в размере -100 руб.
Я понимаю, что этот отчет подразумевает сравнение плановых показателей движения денежных средств и что по плану у нас первого числа поступлений больше не предвидится, соответственно все дальнейшие расходы у нас «якобы» производить неизчего.
Но я не понимаю, какой смысл в этой информации, так как по факту у нас никакого кассового разрыва нет и никаких корректирующих мероприятий по устранению кассового разрыва предпринимать не нужно.
Мне непонятно как при такой информации я могу производить оперативное планирование платежей.
Или я неправильно понимаю методологию?
Если заказчик возжелает заплатить чуть больше в первом платеже, а в остальных чуть меньше — как это организовать? Сделать приход средств на сумму ППДС, и остаток на следующий ПДДС?
Очень помогла статья разобраться в этой системе, автору спасибо!!!