Checkbox – сервіс програмної реєстрації розрахункових операцій.
Не всі ще функції реалізовані, але ті що є, повинно вистачити для роботи в онлайн режимі, ще декілька днів буду наповнювати новими функціями,та додавати чи міняти інформацію на цій сторінці, якщо в кого є бажання можете бути контріб'ютором, форкати та робити пул-реквести
Прошу сильно не ругать, це моя перша бібліотека і рідмі до неЇ, краще залишайте комменти та пропозиції або пишіть на пошту igormakarov1991@gmail.com, де та які принципи я порушив, як краще зробити, та інше, буду радий новим знайомствам :)
https://dev-api.checkbox.in.ua/api/redoc
https://dev-api.checkbox.in.ua/api/docs
https://docs.google.com/document/d/1Zhkc4OljKjea_235YafVvZunkWSp6TCAKeckhgl8t2w/edit
Додаємо залежність в
<dependency>
<groupId>com.makarov.checkbox.ua.api</groupId>
<artifactId>checkbox-ppo</artifactId>
<version>1.1.0</version>
</dependency>Для початку роботи, треба налаштувати та передати конфіг:
адреса продакшн сервера http://api.checkbox.in.ua тестового сервера http://dev-api.checkbox.in.ua
Config config = new Config([
Config.API_URL => 'https://dev-api.checkbox.in.ua/api/v1',
Config.LOGIN => 'логін касира',
Config.PASSWORD => 'пароль касира',
Config.LICENSE_KEY => 'ключ ліцензії касси'
]);Для початку роботи з касою треба залогінити касира
CheckboxAPI api = new CheckboxAPI(config)
api.cashierSignIn();api.cashierSignOut();InvalidCredentialsException - не вірні дані логіну або паролюValidationException - помилка валідаціЇ NotActiveShiftException - зміна не активнаException - стандартна помилкаCheckboxAPI api = new CheckboxAPI(config)
api.cashierSignIn();api.cashierSignOut();Cashier cashier = api.getCashierProfile(); Shift activeShift = api.getCashierActiveShift();api.pingTaxService();ArrayList<Shift> shifts = api.getShifts();api.openShift();Shift shift = api.getShift(String shiftId);api.closeShift();SellReceipt sellReceipt = api.getReceipt(String receiptId);SellReceipt receipt = new SellReceipt.Builder(
new ArrayList<>(
List.of(
new Good.Builder(
"test name",
"test code",
new BigDecimal(4), //ціна товару за одиницю 4грн
new BigDecimal(1), //кількість 1
new ArrayList<>(
List.of(
new Tax(1, "ПДВ", 'А')
)
)
).build(),
new Good.Builder(
"test name 2",
"test code 2",
new BigDecimal(2), //ціна товару за одиницю 2грн
new BigDecimal(2), //кількість 2
new ArrayList<>(
List.of(
new Tax(1, "ПДВ", 'А')
)
)
).build()
)
),
new ArrayList<>(
List.of(
new Payment(
PaymentType.CASH,
new BigDecimal(8) // оплачено готівкою 8 грн
)
)
)
).build();
api.receiptSell(receipt);SellReceipt receipt = new SellReceipt.Builder(
new ArrayList<>(
List.of(
new Good.Builder(
"test name",
"test code",
new BigDecimal(4), //ціна товару за одиницю 4грн
new BigDecimal(1), //кількість 1
new ArrayList<>(
List.of(
new Tax(1, "ПДВ", 'А')
)
)
).setDiscount(
new Discount(
DiscountType.DISCOUNT,
DiscountMode.VALUE,
1 * 100 // знижка 1 грн.
)
).build(),
new Good.Builder(
"test name 2",
"test code 2",
new BigDecimal(2), //ціна товару за одиницю 2грн
new BigDecimal(2), //кількість 2
new ArrayList<>(
List.of(
new Tax(1, "ПДВ", 'А')
)
)
).setDiscount(
new Discount(
DiscountType.DISCOUNT,
DiscountMode.PERCENT,
10 // знижка 10%.
)
).build()
)
),
new ArrayList<>(
List.of(
new Payment(
PaymentType.CASH,
new BigDecimal(6.60) // оплата 6.60 грн (сумма товарів з урахуванням знижки/надбавки)
)
)
)
)
.setDelivery(new Delivery("igormakarov1991@gmail.com"))
.setHeader("Магазин ТРАЛЯЛЯ")
.setFooter("Веселих свят :)")
.setDepartment("Касса 2")
.setBarcode("1231286412")
.build();
api.receiptSell(receipt);внесення:
ServiceReceipt serviceReceipt = checkboxAPI.createServiceReceipt(
new ServiceReceipt(new Payment(PaymentType.CASH, new BigDecimal(100))
);винесення - просто сума оплати з мінусовім значенням:
ServiceReceipt serviceReceipt = checkboxAPI.createServiceReceipt(
new ServiceReceipt(new Payment(PaymentType.CASH, new BigDecimal(-100))
);boolean isSimple - простий чек(без стилів) чи різнокольровий
String receiptHtml = api.getReceiptHtml(String receiptId, boolean isSimple);byte[] receiptPdf = api.getReceiptPdf(String receiptId);А потім ці байти можна записати в файл, наприклад ось так:
File file = new File("/home/" + receipt.getId() + ".png");
FileOutputStream outputStream = new FileOutputStream(file);
outputStream.write(png);int width - Ширина області друку в символах
String receiptText = getReceiptText(String receiptId, int width);PngWidths widths - Ширина області друку в символах
byte[] pngBytes = api.getReceiptPng(String receiptId, PngWidths widths); String encodedString = Base64.getEncoder().encodeToString(pngBytes);byte[] qrCode = api.getReceiptQrCode(String receiptId);api.sendReceiptToEmail(String receiptId);ArrayList<Tax> taxes = api.getAllTaxes(String receiptId);Report report = api.createXReport();String textReport = api.getReportText(String receiptId);width - Ширина області друку в символах
String textReport = api.getReportText(String receiptId, int width);Report report = api.getReport(String reportId);