alkali147 / fbilling

Accounting and billing Application for FreePBX
BSD 2-Clause "Simplified" License
15 stars 22 forks source link

Modify sip_num to accomodate larger values #20

Closed doctorluigi closed 9 years ago

doctorluigi commented 9 years ago

Sometimes the full E.164 number is used as SIP Extension (e.g. 12025550001 or even some other country with even longer country code prefix) and that exceeds the int maximum value (2147483647).

When table billing_extensions is created, sip_num is int(11).

I have manually tried altering the table on the live system: mysql> alter table billing_extensions modify sip_num bigint;

And I have also tried re-creating the billing_extensions table in such manner: CREATE TABLE IF NOT EXISTS billing_extensions ( ... sip_num bigint(20) NOT NULL, ...

but without any success.

After such modification, it fails at matching the tenant with prefix_id (Destination.pm, get_tariff sub): NOTICE - Executing query to get tariff details: SELECT * FROM billing_tariffs WHERE tenant_id = 4 AND prefix_id = 13607 ERROR - Tariff does not exist. Exitting...

Can you please check and advise how to achive larger sip_num / Extension values?

Thanks in advance.

alkali147 commented 9 years ago

You should change sip_num to VARCHAR(whatever_length). I think its safe to use VARCHAR(80) since its used in asteriskcdrdb.cdr table. you can see upgrade/sql-0.9.6_to_0.9.7.sql file for the exact query.

alkali147 commented 9 years ago

Fixed in release 0.9.8