Здравствуйте! Из строк, которые печатает кассовый терминал в чеке, например:
Код:
|
1.Шоколад Нестле классик 100 гр....139.50
2.Яйцо 1 категории Гайфа 1\10.........175.20
3.Сок Джуси 1,0 л Грейпфрут...........190.60 |
необходимо извлекать стоимость товара, т.е. 139.50, 175.20 и 190.60. Когда терминал был настроен на печать стоимости без копеек проблем не было и эта задача решалась следующим фрагментом:
function processSale()
{
var index = data.lastIndexOf(".");
var saleAmount = data.substring(index + 1, data.length);
saleAmount = parseFloat(saleAmount);
var index1 = data.indexOf(".");
var lastChar = null;
for(var i = data.length - 1; i >=0; i--)
{
var ch = data.charAt(i);
if(ch != '.' && lastChar == '.')
{
break;
}
lastChar = ch;
}
var productName = data.substring(index1 + 1, i + 1);
productName = trim(productName);
var reg = /(\S)+X\d/;
var matches = reg.exec(data);
saleProductsCount = 1;
if(matches != null)
{
var s = matches[0];
var array = s.split('X');
var saleProductsCount = array[0];
saleProductsCount = parseFloat(saleProductsCount);
if(isNaN(saleProductsCount))
{
saleProductsCount = 1;
}
}
listenerObject.pushNewSale(productName);
listenerObject.pushSaleAmount(saleAmount);
listenerObject.pushSaleProductsCount(saleProductsCount);
}
но когда настроили терминал на печать копеек, то извлекаются цифры после последней точки, т.е. в нашем примере это 50, 20 и 60 и заносятся в базу данных как стоимость указанного в примере товара, что не соответствует действительности. Подскажите где в приведенном фрагменте и какие внести изменения, чтобы правильно разбиралась строка, пришедшая из кассового терминала. Заранее СПАСИБО!!!