Выставление счетов и квитанция для Украины?

вот же ж везет людям...
а тут как обычно либо акула глухая либо свисток без дырки.
Щас вроде вижу лишние записи - буду пробовать убирать

"CONF_PAYMENTMODULE_INVOICE_PHYS_BANK_KOR_NUMBER",
"CONF_PAYMENTMODULE_INVOICE_PHYS_BIK"

точно...
убрал - вроде матюки верхние исчезли...
Может попал пальцем в небо :)

Вот поковерканное мной :)
Может кому сгодиться для вскрытия
Для просмотра ссылки Войди или Зарегистрируйся


напиши пожалуста куда етот файлик вставлять..спасибки..

и ещо - ти разобрался с етой квитанциєй где прописю маєт бить? если Да - виложи пажалуста..спасибки
 
shop\modules\payment

С прописью не разобрался... Мало знаний для этого. И судя по всему эта задача больше никому не интересна.
 
  • Заблокирован
  • #23
C прописью ни чего страшного нет. Файл который лежит в главной директории сайта тоже имеет имя invoice_phys.php

И как видите сразу идут
PHP:
	//include core files
	include("./cfg/connect.inc.php");
	include("./includes/database/".DBMS.".php");
	include("./cfg/language_list.php");
	include("./core_functions/functions.php");
	include("./core_functions/category_functions.php");
	include("./core_functions/cart_functions.php");
	include("./core_functions/product_functions.php");
	include("./core_functions/statistic_functions.php");
	include("./core_functions/reg_fields_functions.php" );
	include("./core_functions/registration_functions.php" );
	include("./core_functions/country_functions.php" );
	include("./core_functions/zone_functions.php" );
	include("./core_functions/datetime_functions.php" );
	include("./core_functions/order_status_fun

Так вот открыв соседний файл для юр. лиц - увидите ряд функций, которые переводят число в слово === invoice_jur.php

Так вот эти функции нада привязать к физ. лицам и все.

Я как-то делал подобное Для просмотра ссылки Войди или Зарегистрируйся но для др. бланка, но от юр. лиц. Вы можете переделать, всего лишь заменить шаблон почтовый на свой бланк перевода для Украины, очень просто. Ковырять придется только в одном или двух файлах

\modules\templates\invoice_jur.tpl.html - сам шаблон, который менять на свой
\modules\payment\invoice_jur.php - имеются тоже функции
 
Меня также интересует данный вопрос, на щёт того, чтобы сделать квитанцию для физических лиц Украины. А именно, чтобы сделать квитанцию под Приват Банк.

Я тебя првильно понял Злой сосок?
что нужно данный PHP код: какой содержится в invoice_phys.php, что ты написал заменить на
PHP:
// -------------------------INITIALIZATION-----------------------------//

	function _my_formatPrice($price)
	{
		$price = round($price*100)/100;
		if (round($price*10) == $price*10 && round($price)!=$price) 
		$price = "$price"."0"; //to avoid prices like 17.5 - write 17.50 instead
		return _formatPrice($price);
	}

	function number2string($n,$rod) //перевести число $n в строку. Число обязательно должно быть 0 < $n < 1000. $rod указывает на род суффикса (0 - женский, 1 - мужской; например, "рубль" - 1, "тысяча" - 0).
	{
		$n = round($n);
		$a = floor($n / 100);
		$b = floor(($n - $a*100) / 10);
		$c = $n % 10;

		$s = "";
		switch($a)
		{
			case 1: $s = "сто";
			break;
			case 2: $s = "двести";
			break;
			case 3: $s = "триста";
			break;
			case 4: $s = "четыреста";
			break;
			case 5: $s = "пятьсот";
			break;
			case 6: $s = "шестьсот";
			break;
			case 7: $s = "семьсот";
			break;
			case 8: $s = "восемьсот";
			break;
			case 9: $s = "девятьсот";
			break;
		}
		$s .= " ";
		if ($b != 1)
		{
		   switch($b)
		   {
			case 1: $s .= "десять";
			break;
			case 2: $s .= "двадцать";
			break;
			case 3: $s .= "тридцать";
			break;
			case 4: $s .= "сорок";
			break;
			case 5: $s .= "пятьдесят";
			break;
			case 6: $s .= "шестьдесят";
			break;
			case 7: $s .= "семьдесят";
			break;
			case 8: $s .= "восемьдесят";
			break;
			case 9: $s .= "девяносто";
			break;
		   }
		   $s .= " ";
		   switch($c)
		   {
			case 1: $s .= $rod ? "один" : "одна";
			break;
			case 2: $s .= $rod ? "два" : "две";
			break;
			case 3: $s .= "три";
			break;
			case 4: $s .= "четыре";
			break;
			case 5: $s .= "пять";
			break;
			case 6: $s .= "шесть";
			break;
			case 7: $s .= "семь";
			break;
			case 8: $s .= "восемь";
			break;
			case 9: $s .= "девять";
			break;
		   }
		}
		else //...дцать
		{
		   switch($c)
		   {
			case 0: $s .= "десять";
			break;
			case 1: $s .= "одиннадцать";
			break;
			case 2: $s .= "двенадцать";
			break;
			case 3: $s .= "тринадцать";
			break;
			case 4: $s .= "четырнадцать";
			break;
			case 5: $s .= "пятнадцать";
			break;
			case 6: $s .= "шестнадцать";
			break;
			case 7: $s .= "семнадцать";
			break;
			case 8: $s .= "восемнадцать";
			break;
			case 9: $s .= "девятнадцать";
			break;
		   }
		}
		return $s;
	}

	function create_string_representation_of_a_number( $n )
		// создает строковое представление суммы. Например $n = 123.
		// результат будет "Сто двадцать три ру*** 00 копеек"
	{
		//разделить сумма на разряды: единицы, тысячи, миллионы, миллиарды (больше миллиардов не проверять :) )

		$billions = floor($n / 1000000000);
		$millions = floor( ($n-$billions*1000000000) / 1000000);
		$grands = floor( ($n-$billions*1000000000-$millions*1000000) / 1000);
		$roubles = floor( ($n-$billions*1000000000-$millions*1000000-$grands*1000) );//$n % 1000;

		//копейки
		$kop = round ( $n*100 - round( floor($n)*100 ) );
		if ($kop < 10) $kop = "0".(string)$kop;

		$s = "";
		if ($billions > 0)
		{
			$t = "ов";
			$temp = $billions % 10;
			if (floor(($billions % 100)/10) != 1)
			{
				if ($temp == 1) $t = "";
				else if ($temp >=2 && $temp <= 4) $t = "а";
			}
			$s .= number2string($billions,1)." миллиард$t ";
		}
		if ($millions > 0)
		{
			$t = "ов";
			$temp = $millions % 10;
			if (floor(($millions % 100)/10) != 1)
			{
				if ($temp == 1) $t = "";
				else if ($temp >=2 && $temp <= 4) $t = "а";
			}
			$s .= number2string($millions,1)." миллион$t ";
		}
		if ($grands > 0)
		{
			$t = "";
			$temp = $grands % 10;
			if (floor(($grands % 100)/10) != 1)
			{
				if ($temp == 1) $t = "а";
				else if ($temp >=2 && $temp <= 4) $t = "и";
			}
			$s .= number2string($grands,0)." тысяч$t ";
		}
		if ($roubles > 0)
		{
			$rub = "ей";
			$temp = $roubles % 10;
			if (floor(($roubles % 100)/10) != 1)
			{
				if ($temp == 1) $rub = "ь";
				else if ($temp >=2 && $temp <= 4) $rub = "я";
			}
			$s .=  number2string($roubles,1)." рубл$rub ";
		}

		{
			$kp = "ек";
			$temp = $kop % 10;
			if (floor(($kop % 100)/10) != 1)
			{
				if ($temp == 1) $kp = "йка";
				else if ($temp >=2 && $temp <= 4) $kp = "йки";
			}

			$s .= "$kop копе$kp";
		}

		//теперь сделать первую букву заглавной
		if ($roubles>0 || $grands>0 || $millions>0 || $billions>0)
		{
			$cnt=0; while($s[$cnt]==" ") $cnt++;
			$s[$cnt] = chr( ord($s[$cnt])- 32 );
		}

		return $s;
	}

	//include core files
	include("./cfg/connect.inc.php");
	include("./includes/database/".DBMS.".php");
	include("./cfg/language_list.php");
	include("./core_functions/functions.php");
	include("./core_functions/category_functions.php");
	include("./core_functions/cart_functions.php");
	include("./core_functions/product_functions.php");
	include("./core_functions/statistic_functions.php");
	include("./core_functions/reg_fields_functions.php" );
	include("./core_functions/registration_functions.php" );
	include("./core_functions/country_functions.php" );
	include("./core_functions/zone_functions.php" );
	include("./core_functions/datetime_functions.php" );
	include("./core_functions/order_status_functions.php" );

и тогда сумму цифрами будет выводить прописью.
Верно?
 
shop\modules\payment

С прописью не разобрался... Мало знаний для этого. И судя по всему эта задача больше никому не интересна.

у меня етот файлик видаєт ошибку в строке 230...не подскажеш к чемуб ето? мож я шото не так сделал? подскажи где исправить спасибки..
 
  • Заблокирован
  • #26
to biznesoft

По идее да, это функции и их нада скопировать. После чего "имя" функции нада привязывать к или с переменными!!!

Повторюсь, что через юр. лиц сделать очень просто (просто имя модуля другое, а принцип одинаков), но если хотите с физ. лицами, то могут возникать ошибки, которые нада исправлять...

Подробнее отписал выше.

to Docento

Еще рано заморачиваться квитком, этот файл по идее не нада вообще трогать было - как есть по умолчанию т.е. при инстале, только в край скопировать в него функции, а шаб редактировать под Украину, нада в \modules\templates\
 
Меня также интересует данный вопрос, на щёт того, чтобы сделать квитанцию для физических лиц Украины. А именно, чтобы сделать квитанцию под Приват Банк.

Я тебя првильно понял Злой сосок?
что нужно данный PHP код: какой содержится в invoice_phys.php, что ты написал заменить на
PHP:
// -------------------------INITIALIZATION-----------------------------//

	function _my_formatPrice($price)
	{
		$price = round($price*100)/100;
		if (round($price*10) == $price*10 && round($price)!=$price) 
		$price = "$price"."0"; //to avoid prices like 17.5 - write 17.50 instead
		return _formatPrice($price);
	}

	function number2string($n,$rod) //перевести число $n в строку. Число обязательно должно быть 0 < $n < 1000. $rod указывает на род суффикса (0 - женский, 1 - мужской; например, "рубль" - 1, "тысяча" - 0).
	{
		$n = round($n);
		$a = floor($n / 100);
		$b = floor(($n - $a*100) / 10);
		$c = $n % 10;

		$s = "";
		switch($a)
		{
			case 1: $s = "сто";
			break;
			case 2: $s = "двести";
			break;
			case 3: $s = "триста";
			break;
			case 4: $s = "четыреста";
			break;
			case 5: $s = "пятьсот";
			break;
			case 6: $s = "шестьсот";
			break;
			case 7: $s = "семьсот";
			break;
			case 8: $s = "восемьсот";
			break;
			case 9: $s = "девятьсот";
			break;
		}
		$s .= " ";
		if ($b != 1)
		{
		   switch($b)
		   {
			case 1: $s .= "десять";
			break;
			case 2: $s .= "двадцать";
			break;
			case 3: $s .= "тридцать";
			break;
			case 4: $s .= "сорок";
			break;
			case 5: $s .= "пятьдесят";
			break;
			case 6: $s .= "шестьдесят";
			break;
			case 7: $s .= "семьдесят";
			break;
			case 8: $s .= "восемьдесят";
			break;
			case 9: $s .= "девяносто";
			break;
		   }
		   $s .= " ";
		   switch($c)
		   {
			case 1: $s .= $rod ? "один" : "одна";
			break;
			case 2: $s .= $rod ? "два" : "две";
			break;
			case 3: $s .= "три";
			break;
			case 4: $s .= "четыре";
			break;
			case 5: $s .= "пять";
			break;
			case 6: $s .= "шесть";
			break;
			case 7: $s .= "семь";
			break;
			case 8: $s .= "восемь";
			break;
			case 9: $s .= "девять";
			break;
		   }
		}
		else //...дцать
		{
		   switch($c)
		   {
			case 0: $s .= "десять";
			break;
			case 1: $s .= "одиннадцать";
			break;
			case 2: $s .= "двенадцать";
			break;
			case 3: $s .= "тринадцать";
			break;
			case 4: $s .= "четырнадцать";
			break;
			case 5: $s .= "пятнадцать";
			break;
			case 6: $s .= "шестнадцать";
			break;
			case 7: $s .= "семнадцать";
			break;
			case 8: $s .= "восемнадцать";
			break;
			case 9: $s .= "девятнадцать";
			break;
		   }
		}
		return $s;
	}

	function create_string_representation_of_a_number( $n )
		// создает строковое представление суммы. Например $n = 123.
		// результат будет "Сто двадцать три ру*** 00 копеек"
	{
		//разделить сумма на разряды: единицы, тысячи, миллионы, миллиарды (больше миллиардов не проверять :) )

		$billions = floor($n / 1000000000);
		$millions = floor( ($n-$billions*1000000000) / 1000000);
		$grands = floor( ($n-$billions*1000000000-$millions*1000000) / 1000);
		$roubles = floor( ($n-$billions*1000000000-$millions*1000000-$grands*1000) );//$n % 1000;

		//копейки
		$kop = round ( $n*100 - round( floor($n)*100 ) );
		if ($kop < 10) $kop = "0".(string)$kop;

		$s = "";
		if ($billions > 0)
		{
			$t = "ов";
			$temp = $billions % 10;
			if (floor(($billions % 100)/10) != 1)
			{
				if ($temp == 1) $t = "";
				else if ($temp >=2 && $temp <= 4) $t = "а";
			}
			$s .= number2string($billions,1)." миллиард$t ";
		}
		if ($millions > 0)
		{
			$t = "ов";
			$temp = $millions % 10;
			if (floor(($millions % 100)/10) != 1)
			{
				if ($temp == 1) $t = "";
				else if ($temp >=2 && $temp <= 4) $t = "а";
			}
			$s .= number2string($millions,1)." миллион$t ";
		}
		if ($grands > 0)
		{
			$t = "";
			$temp = $grands % 10;
			if (floor(($grands % 100)/10) != 1)
			{
				if ($temp == 1) $t = "а";
				else if ($temp >=2 && $temp <= 4) $t = "и";
			}
			$s .= number2string($grands,0)." тысяч$t ";
		}
		if ($roubles > 0)
		{
			$rub = "ей";
			$temp = $roubles % 10;
			if (floor(($roubles % 100)/10) != 1)
			{
				if ($temp == 1) $rub = "ь";
				else if ($temp >=2 && $temp <= 4) $rub = "я";
			}
			$s .=  number2string($roubles,1)." рубл$rub ";
		}

		{
			$kp = "ек";
			$temp = $kop % 10;
			if (floor(($kop % 100)/10) != 1)
			{
				if ($temp == 1) $kp = "йка";
				else if ($temp >=2 && $temp <= 4) $kp = "йки";
			}

			$s .= "$kop копе$kp";
		}

		//теперь сделать первую букву заглавной
		if ($roubles>0 || $grands>0 || $millions>0 || $billions>0)
		{
			$cnt=0; while($s[$cnt]==" ") $cnt++;
			$s[$cnt] = chr( ord($s[$cnt])- 32 );
		}

		return $s;
	}

	//include core files
	include("./cfg/connect.inc.php");
	include("./includes/database/".DBMS.".php");
	include("./cfg/language_list.php");
	include("./core_functions/functions.php");
	include("./core_functions/category_functions.php");
	include("./core_functions/cart_functions.php");
	include("./core_functions/product_functions.php");
	include("./core_functions/statistic_functions.php");
	include("./core_functions/reg_fields_functions.php" );
	include("./core_functions/registration_functions.php" );
	include("./core_functions/country_functions.php" );
	include("./core_functions/zone_functions.php" );
	include("./core_functions/datetime_functions.php" );
	include("./core_functions/order_status_functions.php" );

и тогда сумму цифрами будет выводить прописью.
Верно?


незнаю - у меня ано неработаєт если заменить полнастю....напиши если у тебя пойдьот..спасибки

+ ти задавал вопрос о приватбанку - незнаю как там с приватом мне на надра нужен (в принципе мона поправить) у меня неплохо пошла та што била здесь виложена ранше..посмотри я в банке єщо небил незнаю мож подойдет та што єсть..если нет скинь мне фотку я попробую поправить то што єсть у меня под ту што просит приват..
 
  • Заблокирован
  • #28
Сделал все таки, не проверял на баксах, только на ру***х. Выкладываю
 

Вложения

  • главная директория магазина.rar
    8,4 KB · Просмотры: 50
у меня етот файлик видаєт ошибку в строке 230...не подскажеш к чемуб ето? мож я шото не так сделал? подскажи где исправить спасибки..

Хоть напиши дословно что пишет. Я ж не помню все строки наизусть. Да и не знаю как у Тебя сервер настроен и что может выдавать?

Добавлено через 1 минуту
Сделал все таки, не проверял на баксах, только на ру***х. Выкладываю

На баксы плевать - никто на почтовых отделениях перевод баксами не возьмет :) Вообще даже лучше что-бы в баксах ниче не считало при выписке квитанции.

Добавлено через 32 минуты
Что-то все же не то.

Так например если у меня в админке явно указано что квитанцию выставлять в грн. а человек при этом смотрит и заказывает товар в баксах - то магазин автоматом пересчитывает по курсу и выставляет квитанцию все равно в грн. но по указаному в магазине курсу.

В файлах же Злого Соска получается только та цифра в которой происходит заказ. Тоесть клиент заказал товар на 50 баксов, то в квитанции при этом пишется 50 рублей.

:-( путаница получается полнейшая.
 
  • Заблокирован
  • #30
Вот как пример кода, только привязать к квитанции с указанием курса... Пробуйте

PHP:
	$order_amount = $order_amount/((float)$this->_getSettingValue('CONF_PAYMENTMODULE_WEBMONEY_MERCHANT_EXCHANGERATE'));
		$str = round($order_amount/((float)$this->_getSettingValue('CONF_PAYMENTMODULE_WEBMONEY_MERCHANT_EXCHANGERATE'))/1, 2);
    $order_amount1 = round($str*24.5, 2);

Где 24.5 курс бакса магазина, можно использовать и деление / заместо умножения * Кому что нужно по отношению к курсам валют


Изначально в коде стоит умножение на RUR - я удалил (файл в аттаче), попробуйте поиграться с этим.
 
Назад
Сверху