Так как Стандартный импорт 2 CSV не может прогружать ставку налога равную нулю, проверено на стенде (неужели разработчики не догадались для таких случаев добавить символ например 0.0), назвал этот метод: расколи орех мобильным телефоном ))). Можно же расколоть орех молотком но его нет, а есть мобильный, буду использовать его (можно оптимизировать, конечно, сейчас выкладываю в грубой форме).
1. Удаляем все записи в таблицах trm_in_tare и trm_in_taxes базы ukmserver .
2. Прогружаем через конвертор Стандартный импорт 2 CSV три файла CLASSTAX.DAT, TAX.DAT (параметры должны соответствовать вашим настройкам), CASH.UPD (название зависит от Ваших настроек конвертора).
Пример моих файлов:
CLASSTAX.DAT:
1,0,0,0,0,1,18,0,0
TAX.DAT:
1,1,"НДС 18% начисляемый"
2,1,"НДС 10% начисляемый"
3,1,"НДС 0%"
4,1,"Не облагается НДС"
5,1,"НДС 18% выделяемый (18/118)"
6,1,"НДС 10% выделяемый (10/110)"
CASH.UPD:
OK
3. Прогружаем через конвертор Стандартный импорт 4 данные:
USE IMPORT;
INSERT INTO taxes(id,NAME,priority,VERSION,deleted) VALUES (1,"НДС 18% начисляемый",1,1,0);
INSERT INTO taxgroup(id,tax_id,percent,VERSION,deleted) VALUES (1,1,"18%",1,0);
INSERT INTO taxes(id,NAME,priority,VERSION,deleted) VALUES (2,"НДС 10% начисляемый",1,1,0);
INSERT INTO taxgroup(id,tax_id,percent,VERSION,deleted) VALUES (2,2,"10%",1,0);
INSERT INTO taxes(id,NAME,priority,VERSION,deleted) VALUES (3,"НДС 0%",1,1,0);
INSERT INTO taxgroup(id,tax_id,percent,VERSION,deleted) VALUES (3,3,"0%",1,0);
INSERT INTO taxes(id,NAME,priority,VERSION,deleted) VALUES (4,"Не облагается НДС",1,1,0);
INSERT INTO taxgroup(id,tax_id,percent,VERSION,deleted) VALUES (4,4,"0%",1,0);
INSERT INTO taxes(id,NAME,priority,VERSION,deleted) VALUES (5,"НДС 18% выделяемый (18/118)",1,1,0);
INSERT INTO taxgroup(id,tax_id,percent,VERSION,deleted) VALUES (5,5,"18%",1,0);
INSERT INTO taxes(id,NAME,priority,VERSION,deleted) VALUES (6,"НДС 10% выделяемый (10/110)",1,1,0);
INSERT INTO taxgroup(id,tax_id,percent,VERSION,deleted) VALUES (6,6,"10%",1,0);
INSERT INTO import.signal (`signal`,`version`) VALUES ('incr',1);
4. Создаем в базе import (название зависит от настроек конвертора) две хранимые процедуры: nds_0 и nds_10, в них прописываем:
nds_0:
DELIMITER $$
USE `import`$$
DROP PROCEDURE IF EXISTS `nds_0`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `nds_0`()
BEGIN
INSERT INTO taxgroup(id,tax_id,percent,`version`,deleted) VALUES (4,4,"0%",1,0);
INSERT INTO import.signal (`signal`,`version`) VALUES ('incr',1);
END$$
DELIMITER ;
nds_10:
DELIMITER $$
USE `import`$$
DROP PROCEDURE IF EXISTS `nds_10`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `nds_10`()
BEGIN
INSERT INTO taxgroup(id,tax_id,percent,`version`,deleted) VALUES (4,4,"10%",1,0);
INSERT INTO import.signal (`signal`,`version`) VALUES ('incr',1);
END$$
DELIMITER ;
5. Создаем D:\ukm\test\CLASSTAX.DAT и D:\ukm\test\CASH.UPD
CLASSTAX.DAT:
1,0,0,0,0,4,10,0,0
6. Добавляем в папку D:\ukm\test\ файл sleep.exe (можно скачать в интернете).
7. Создаем командный файл nds.bat
nds.bat:
echo call nds_10; | C:\mysql\bin\mysql.exe --host=localhost --user= имя пользователя --password= пароль --database= имя базы заданное в конверторе Стандартный импорт 4
sleep 60
copy D:\ukm\test\CLASSTAX.DAT D:\ukm\110\00000101\out
copy D:\ukm\test\CASH.UPD D:\ukm\110\00000101\out
:test
if not exist D:\ukm\110\00000101\out\CASH.UPD goto go
goto test
:go
echo call nds_0; | C:\mysql\bin\mysql.exe --host=localhost --user=имя пользователя --password=пароль --database=имя базы заданное в конверторе Стандартный импорт 4
del D:\ukm\110\00000101\out\CLASSTAX.DAT
8. В Планировщик заданий Windows добавляем выполнение nds.bat (я добавил запуск команд из nds.bat в файл бекапа УКМ).