Интегрировали Аксапту с фискальным регистратором FPrint-02K.
1) Покупаете фискальный регистратор FPrint-02K (это принтер с фискальной памятью),
http://www.atol.ru/products/fr/fprint/. Регистратор стоит около 30 тыс. рублей.
2) Скачиваете драйверы Atoll с :
http://www.atol.ru/support/programs/
3) Устанавливаете драйверы на том компьютере, с которого будут печататься чеки из Аксапты.
4) Джоб, идущий ниже, в Аксапте демонстрирует возможности принтера. Также в дистрибутиве с драйверами идут примеры на разных языках программирования. Я использовал пример из Excel'я - просто переписал макросы оттуда в Аксапту.
X++:
static void zFiscalPrinterTest(Args _args)
{
COM ECR;
;
ECR = new COM("AddIn.FprnM45");
//занимаем порт
ECR.DeviceEnabled(True);
if (ECR.ResultCode())
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
//получаем состояние ККМ
if (ECR.GetStatus() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
//проверяем на всякий случай ККМ на фискализированность
if (ECR.Fiscal())
{
if (Box::yesNo("ККМ фискализирована! Вы действительно хотите продолжить?", DialogButton::No) == DialogButton::No)
{
throw error("Действие отменено!");
}
}
//если есть открытый чек, то отменяем его
if (ECR.CheckState() != 0)
{
if (ECR.CancelCheck() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
}
//входим в режим регистрации
//устанавливаем пароль кассира
ECR.Password("1");
//входим в режим регистрации
ECR.Mode(1);
if (ECR.SetMode() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
//продажа без сдачи
//регистрация продажи
ECR.Name("Молоко");
ECR.Price(10.45);
ECR.Quantity(5);
ECR.Department(2);
If (ECR.Registration() != 0)//вызывать для каждой добавляемой строки
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
ECR.Name("Хлеб");
ECR.Price(543.23);
ECR.Quantity(2);
ECR.Department(2);
If (ECR.Registration() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
info(strfmt("Номер чека %1, номер документа %2", ECR.CheckNumber(), ECR.Table()));
//закрытие чека наличными с вводом полученной от клиента суммы
//ECR.Summ(100);
ECR.TypeClose(0);
//If (ECR.Delivery() != 0)
// throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
if (ECR.CloseCheck() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
//выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
If (ECR.ResetMode() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
//освобождаем порт
ECR.DeviceEnabled(False);
If (ECR.ResultCode() != 0)
throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
Box::info("Все операции успешно выполнены!");
}