コード例 #1
0
ファイル: facture.php プロジェクト: TAASA/Dolibarr-ERP-3.8.1
 } elseif ($tmp == 'NotConfigured') {
     print $langs->trans($tmp);
 } else {
     print $tmp;
 }
 print '</td>' . "\n";
 print '<td align="center">';
 //print "> ".$conf->global->FACTURE_ADDON." - ".$file;
 if ($conf->global->FACTURE_ADDON == $file || $conf->global->FACTURE_ADDON . '.php' == $file) {
     print img_picto($langs->trans("Activated"), 'switch_on');
 } else {
     print '<a href="' . $_SERVER["PHP_SELF"] . '?action=setmod&value=' . preg_replace('/\\.php$/', '', $file) . '&scandir=' . $module->scandir . '&label=' . urlencode($module->name) . '" alt="' . $langs->trans("Default") . '">' . img_picto($langs->trans("Disabled"), 'switch_off') . '</a>';
 }
 print '</td>';
 $facture = new Facture($db);
 $facture->initAsSpecimen();
 // Example for standard invoice
 $htmltooltip = '';
 $htmltooltip .= '' . $langs->trans("Version") . ': <b>' . $module->getVersion() . '</b><br>';
 $facture->type = 0;
 $nextval = $module->getNextValue($mysoc, $facture);
 if ("{$nextval}" != $langs->trans("NotAvailable")) {
     // Keep " on nextval
     $htmltooltip .= $langs->trans("NextValueForInvoices") . ': ';
     if ($nextval) {
         if (preg_match('/^Error/', $nextval) || $nextval == 'NotConfigured') {
             $nextval = $langs->trans($nextval);
         }
         $htmltooltip .= $nextval . '<br>';
     } else {
         $htmltooltip .= $langs->trans($module->error) . '<br>';
コード例 #2
0
    /**
     * testFactureCreate
     *
     * @return int
     */
    public function testFactureMercure()
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

		require_once dirname(__FILE__).'/../../htdocs/compta/facture/class/facture.class.php';
		require_once dirname(__FILE__).'/../../htdocs/core/modules/facture/mod_facture_mercure.php';

		//$conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}{mm}-{0000@3}';
		//$conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}{mm}-{0000@3}';
		$conf->global->FACTURE_MERCURE_MASK_CREDIT='{yyyy}-{0000@1}';
		$conf->global->FACTURE_MERCURE_MASK_INVOICE='{yyyy}-{0000@1}';

		$localobject=new Facture($this->savdb);
		$localobject->initAsSpecimen();
		$localobject->date=dol_mktime(0, 0, 0, 1, 1, 2012);
		$numbering=new mod_facture_mercure();
		$result=$numbering->getNextValue($mysoc, $localobject);
		print __METHOD__." result=".$result."\n";

		$localobject=new Facture($this->savdb);
		$localobject->initAsSpecimen();
		$localobject->date=dol_mktime(0, 0, 0, 1, 1, 2011);
		$numbering=new mod_facture_mercure();
		$result=$numbering->getNextValue($mysoc, $localobject);
    	print __METHOD__." result=".$result."\n";

    	$this->assertLessThan($result, 0);
    	return $result;
    }
コード例 #3
0
ファイル: FactureRecTest.php プロジェクト: Samara94/dolibarr
 /**
  * testFactureCreate
  *
  * @return int
  */
 public function testFactureRecCreate()
 {
     global $conf, $user, $langs, $db;
     $conf = $this->savconf;
     $user = $this->savuser;
     $langs = $this->savlangs;
     $db = $this->savdb;
     $localobjectinv = new Facture($this->savdb);
     $localobjectinv->initAsSpecimen();
     $localobjectinv->create($user);
     $localobject = new FactureRec($this->savdb);
     $localobject->initAsSpecimen();
     $result = $localobject->create($user, $localobjectinv->id);
     $this->assertLessThan($result, 0);
     print __METHOD__ . " result=" . $result . "\n";
     return $result;
 }
コード例 #4
0
ファイル: PdfDocTest.php プロジェクト: nrjacker4/crm-php
    /**
     * testPdfDocGetLineDesc
     *
     * @return void
     */
    public function testPdfDocGetLineDesc()
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

		$localobject=new Facture($this->savdb);
		$localobject->initAsSpecimen();
		$localobject->lines=array();
		$localobject->lines[0]->fk_product=1;
		$localobject->lines[0]->label='Label 1';
		$localobject->lines[0]->desc="This is a description with a é accent\n(Country of origin: France)";

    	$result=pdf_getlinedesc($localobject,0,$langs);
    	print __METHOD__." result=".$result."\n";
    	$this->assertEquals($result,"PIDRESS - Label 1<br>This is a description with a &eacute; accent<br>(Country of origin: France)");

    	$result=doc_getlinedesc($localobject->lines[0],$langs);
    	print __METHOD__." result=".$result."\n";
    	$this->assertEquals($result,"PIDRESS - Label 1\nThis is a description with a é accent\n(Country of origin: France)");
    }
コード例 #5
0
ファイル: PricesTest.php プロジェクト: Samara94/dolibarr
 /**
  * Test function addline and update_price
  *
  * @return 	boolean
  * @see		http://wiki.dolibarr.org/index.php/Draft:VAT_calculation_and_rounding#Standard_usage
  */
 public function testUpdatePrice()
 {
     //$this->sharedFixture
     global $conf, $user, $langs, $db;
     $this->savconf = $conf;
     $this->savuser = $user;
     $this->savlangs = $langs;
     $this->savdb = $db;
     $conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 0;
     // Two lines of 1.24 give 2.48 HT and 2.72 TTC with standard vat rounding mode
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen('nolines');
     $invoiceid = $localobject->create($user);
     $localobject->addline('Desc', 1.24, 1, 10, 0, 0, 0, 0, '', '', 0, 0, 0, 'HT');
     $localobject->addline('Desc', 1.24, 1, 10, 0, 0, 0, 0, '', '', 0, 0, 0, 'HT');
     $newlocalobject = new Facture($this->savdb);
     $newlocalobject->fetch($invoiceid);
     $this->assertEquals(2.48, $newlocalobject->total_ht, "testUpdatePrice test1");
     $this->assertEquals(0.24, $newlocalobject->total_tva, "testUpdatePrice test2");
     $this->assertEquals(2.72, $newlocalobject->total_ttc, "testUpdatePrice test3");
     // Two lines of 1.24 give 2.48 HT and 2.73 TTC with global vat rounding mode
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen('nolines');
     $invoiceid = $localobject->create($user);
     $localobject->addline('Desc', 1.24, 1, 10, 0, 0, 0, 0, '', '', 0, 0, 0, 'HT');
     $localobject->addline('Desc', 1.24, 1, 10, 0, 0, 0, 0, '', '', 0, 0, 0, 'HT');
     $newlocalobject = new Facture($this->savdb);
     $newlocalobject->fetch($invoiceid);
     $this->assertEquals(2.48, $newlocalobject->total_ht, "testUpdatePrice test4");
     //$this->assertEquals(0.25,$newlocalobject->total_tva);
     //$this->assertEquals(2.73,$newlocalobject->total_ttc);
 }
コード例 #6
0
 /**
  *  Initialise an instance with random values.
  *  Used to build previews or test instances.
  *	id must be 0 if object instance is a specimen.
  *
  *	@param	string		$option		''=Create a specimen invoice with lines, 'nolines'=No lines
  *  @return	void
  */
 function initAsSpecimen($option = '')
 {
     global $user, $langs, $conf;
     $now = dol_now();
     $arraynow = dol_getdate($now);
     $nownotime = dol_mktime(0, 0, 0, $arraynow['mon'], $arraynow['mday'], $arraynow['year']);
     parent::initAsSpecimen($option);
     $this->usenewprice = 1;
 }
コード例 #7
0
    /**
     * testFactureRoundingCreate2
     * 
     * @return int
     * 
     * @depends	testFactureRoundingCreate1
     * Test according to page http://wiki.dolibarr.org/index.php/Draft:VAT_calculation_and_rounding#Standard_usage
     */
    public function testFactureRoundingCreate2()
    {
        global $conf,$user,$langs,$db;
        $conf=$this->savconf;
        $user=$this->savuser;
        $langs=$this->savlangs;
        $db=$this->savdb;

        $localobject=new Facture($this->savdb);
        $localobject->initAsSpecimen();
        $localobject->lines=array();
        unset($localobject->total_ht);
        unset($localobject->total_ttc);
        unset($localobject->total_vat);
        $result=$localobject->create($user);

        // Add two lines
        for ($i=0; $i<2; $i++)
        {
            $localobject->addline($result, 'Description '.$i, 1.24, 1, 10);
        }

        $newlocalobject=new Facture($this->savdb);
        $newlocalobject->fetch($result);
        //var_dump($newlocalobject);

        $this->assertEquals($newlocalobject->total_ht, 2.48);
        //$this->assertEquals($newlocalobject->total_tva, 0.25);
        //$this->assertEquals($newlocalobject->total_ttc, 2.73);
        return $result;
    }
コード例 #8
0
ファイル: FactureTest.php プロジェクト: nrjacker4/crm-php
    /**
     * testFactureValid
     *
     * @param	Object	$localobject	Invoice
     * @return	void
     *
     * @depends	testFactureUpdate
     * The depends says test is run only if previous is ok
     */
    public function testFactureValid($localobject)
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

    	$result=$localobject->validate($user);
    	print __METHOD__." id=".$localobject->id." result=".$result."\n";

    	$this->assertLessThan($result, 0);

    	// Test everything are still same than specimen
    	$newlocalobject=new Facture($this->savdb);
    	$newlocalobject->initAsSpecimen();
    	$this->changeProperties($newlocalobject);
        $this->assertEquals($this->objCompare($localobject,$newlocalobject,true,array('id','lines','client','thirdparty','brouillon','user_author','date_creation','date_validation','datem','ref','statut','paye','specimen','facnumber','actiontypecode','actionmsg2','actionmsg','mode_reglement','cond_reglement','cond_reglement_doc')), array());    // Actual, Expected

    	return $localobject;
    }
コード例 #9
0
ファイル: BuildDocTest.php プロジェクト: nrjacker4/crm-php
    /**
     * testFactureBuild
     *
     * @return int
     */
    public function testFactureBuild()
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

		$conf->facture->dir_output.='/temp';

		$localobjectcom=new Commande($this->savdb);
		$localobjectcom->initAsSpecimen();

		$localobject=new Facture($this->savdb);
    	$localobject->createFromOrder($localobjectcom);
    	$localobject->date_lim_reglement = dol_now() + 3600 * 24 *30;

    	// Crabe
    	$localobject->modelpdf='crabe';
    	$result=facture_pdf_create($db, $localobject, $localobject->modelpdf, $langs);

		$localobject=new Facture($this->savdb);
		$localobject->initAsSpecimen();

		$this->assertLessThan($result, 0);
    	print __METHOD__." result=".$result."\n";

    	// Oursin
    	$localobject->modelpdf='oursin';
    	$result=facture_pdf_create($db, $localobject, $localobject->modelpdf, $langs);

    	$this->assertLessThan($result, 0);
    	print __METHOD__." result=".$result."\n";

    	return 0;
    }
コード例 #10
0
ファイル: PdfDocTest.php プロジェクト: Samara94/dolibarr
 /**
  * testPdfDocGetLineDesc
  *
  * @return void
  */
 public function testPdfDocGetLineDesc()
 {
     global $conf, $user, $langs, $db;
     $conf = $this->savconf;
     $user = $this->savuser;
     $langs = $this->savlangs;
     $db = $this->savdb;
     $localproduct = new Product($this->savdb);
     $localproduct->fetch(0, 'PIDRESS');
     $product_id = $localproduct->id;
     if ($product_id <= 0) {
         print "\n" . __METHOD__ . " A product with ref PIDRESS must exists into database";
         die;
     }
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->lines = array();
     $localobject->lines[0] = new FactureLigne($this->savdb);
     $localobject->lines[0]->fk_product = $product_id;
     $localobject->lines[0]->label = 'Label 1';
     $localobject->lines[0]->desc = "This is a description with a é accent\n(Country of origin: France)";
     $result = pdf_getlinedesc($localobject, 0, $langs);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals($result, "PIDRESS - Label 1<br>This is a description with a &eacute; accent<br>(Country of origin: France)");
     $result = doc_getlinedesc($localobject->lines[0], $langs);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals($result, "PIDRESS - Label 1\nThis is a description with a é accent\n(Country of origin: France)");
 }
コード例 #11
0
 /**
  * testFactureAddLine3
  *
  * @return	void
  *
  * @depends	testFactureAddLine2
  * The depends says test is run only if previous is ok
  */
 public function testFactureAddLine3()
 {
     global $conf, $user, $langs, $db;
     $conf = $this->savconf;
     $user = $this->savuser;
     $langs = $this->savlangs;
     $db = $this->savdb;
     // With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 0
     $conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 0;
     $localobject3 = new Facture($this->savdb);
     $localobject3->initAsSpecimen('nolines');
     $facid = $localobject3->create($user);
     $localobject3->addline('Line 1', 6.36, 3, 21);
     $localobject3->addline('Line 2', 6.36, 3, 21);
     $localobject3->addline('Line 3', 6.36, 3, 21);
     $localobject3->addline('Line 4', 6.36, 3, 21);
     $localobject3->addline('Line 5', 6.36, 3, 21);
     print __METHOD__ . " id=" . $facid . " total_ttc=" . $localobject3->total_ttc . "\n";
     $this->assertEquals(95.40000000000001, $localobject3->total_ht);
     $this->assertEquals(20.05, $localobject3->total_tva);
     $this->assertEquals(115.45, $localobject3->total_ttc);
     // With option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 1
     $conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND = 1;
     $localobject3 = new Facture($this->savdb);
     $localobject3->initAsSpecimen('nolines');
     $facid = $localobject3->create($user);
     $localobject3->addline('Line 1', 6.36, 3, 21);
     $localobject3->addline('Line 2', 6.36, 3, 21);
     $localobject3->addline('Line 3', 6.36, 3, 21);
     $localobject3->addline('Line 4', 6.36, 3, 21);
     $localobject3->addline('Line 5', 6.36, 3, 21);
     print __METHOD__ . " id=" . $facid . " total_ttc=" . $localobject3->total_ttc . "\n";
     $this->assertEquals(95.40000000000001, $localobject3->total_ht);
     $this->assertEquals(20.03, $localobject3->total_tva);
     $this->assertEquals(115.43, $localobject3->total_ttc);
 }
コード例 #12
0
 /**
  * testFactureMercure
  *
  * @return int
  */
 public function testFactureMercure()
 {
     global $conf, $user, $langs, $db, $mysoc;
     $conf = $this->savconf;
     $user = $this->savuser;
     $langs = $this->savlangs;
     $db = $this->savdb;
     require_once dirname(__FILE__) . '/../../htdocs/compta/facture/class/facture.class.php';
     require_once dirname(__FILE__) . '/../../htdocs/core/modules/facture/mod_facture_mercure.php';
     // First we try with a simple mask, with no reset
     // and we test counter is still increase second year.
     $conf->global->FACTURE_ADDON = 'mercure';
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}-{0000}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}-{0000}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1915);
     // we use year 1915 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     // create invoice by forcing ref
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('1915-0001', $result);
     // counter must start to 1
     $result = $localobject->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result, 'Test for {yyyy}-{0000}, 1st invoice');
     // Can be deleted
     $localobject2 = new Facture($this->savdb);
     $localobject2->initAsSpecimen();
     $localobject2->date = dol_mktime(12, 0, 0, 1, 1, 1916);
     // we use following year for second invoice (there is no reset into mask)
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject2, 'last');
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('1915-0001', $result);
     $result = $numbering->getNextValue($mysoc, $localobject2);
     $result2 = $localobject2->create($user, 1);
     $result3 = $localobject2->validate($user, $result);
     // create invoice by forcing ref
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('1916-0002', $result);
     // counter must be now 2 (not reseted)
     $result = $localobject2->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result);
     // Can be deleted
     $result = $localobject->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(0, $result, 'Test for {yyyy}-{0000} that is_erasable is 0 for 1st invoice');
     // 1 can no more be deleted (2 is more recent)
     // Now we try with a reset
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}-{0000@1}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}-{0000@1}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1910);
     // we use year 1910 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('1910-0001', $result, 'Test for {yyyy}-{0000@1} 1st invoice');
     // counter must start to 1
     $localobject2 = new Facture($this->savdb);
     $localobject2->initAsSpecimen();
     $localobject2->date = dol_mktime(12, 0, 0, 1, 1, 1910);
     // we use same year for second invoice (and there is a reset required)
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject2);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('1910-0002', $result, 'Test for {yyyy}-{0000@1} 2nd invoice, same day');
     // counter must be now 2
     $localobject3 = new Facture($this->savdb);
     $localobject3->initAsSpecimen();
     $localobject3->date = dol_mktime(12, 0, 0, 1, 1, 1911);
     // we use next year for third invoice (and there is a reset required)
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject3);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('1911-0001', $result, 'Test for {yyyy}-{0000@1} 3nd invoice, same day');
     // counter must be now 1
     // Same but we add month after year
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@1}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@1}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1920);
     // we use year 1920 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('192001-0001', $result, 'Test for {yyyy}{mm}-{0000@1} 1st invoice');
     // counter must start to 1
     $result = $localobject->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result);
     // Can be deleted
     $localobject2 = new Facture($this->savdb);
     $localobject2->initAsSpecimen();
     $localobject2->date = dol_mktime(12, 0, 0, 1, 1, 1921);
     // we use following year for second invoice (and there is a reset required)
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject2);
     $result2 = $localobject2->create($user, 1);
     $result3 = $localobject2->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('192101-0001', $result);
     // counter must be reseted to 1
     $result = $localobject2->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result);
     // Can be deleted
     $result = $localobject->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result);
     // Case 1 can be deleted (because there was a reset for case 2)
     // Same but we add month before year and use a year on 2 digits
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '[mm}{yy}-{0000@1}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{mm}{yy}-{0000@1}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1925);
     // we use year 1925 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('0125-0001', $result, 'Test for {mm}{yy}-{0000@1} 1st invoice');
     // counter must start to 1
     $result = $localobject->is_erasable();
     // This call get getNextNumRef with param 'last'
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result);
     // Can be deleted
     $localobject2 = new Facture($this->savdb);
     $localobject2->initAsSpecimen();
     $localobject2->date = dol_mktime(12, 0, 0, 1, 1, 1925);
     // we use same year 1925 for second invoice (and there is a reset required)
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject2);
     $result2 = $localobject2->create($user, 1);
     $result3 = $localobject2->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('0125-0002', $result, 'Test for {mm}{yy}-{0000@1} 2st invoice');
     // counter must be now 2
     $result = $localobject2->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(1, $result);
     // Can be deleted
     $result = $localobject->is_erasable();
     print __METHOD__ . " is_erasable=" . $result . "\n";
     $this->assertEquals(0, $result);
     // Case 1 can not be deleted (because there is an invoice 2)
     $localobject3 = new Facture($this->savdb);
     $localobject3->initAsSpecimen();
     $localobject3->date = dol_mktime(12, 0, 0, 1, 1, 1926);
     // we use following year for third invoice (and there is a reset required)
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject3);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('0126-0001', $result, 'Test for {mm}{yy}-{0000@1} 3rd invoice');
     // counter must be now 1
     // Try an offset when an invoice already exists
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000+9990}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000+9990}';
     $result = $numbering->getNextValue($mysoc, $localobject2);
     // Now we try with a different fiscal month (forced by mask)
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@6}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@6}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1930);
     // we use year 1930 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject, 'last');
     print __METHOD__ . " result for last=" . $result . "\n";
     $this->assertEquals('', $result);
     // no existing ref into reset range
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('193001-0001', $result);
     // counter must start to 1
     $result = $numbering->getNextValue($mysoc, $localobject, 'last');
     print __METHOD__ . " result for last=" . $result . "\n";
     $this->assertEquals('193001-0001', $result);
     // last ref into reset range should be same than last created
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1930);
     // we use same year but fiscal month after
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject, 'last');
     print __METHOD__ . " result for last=" . $result . "\n";
     $this->assertEquals('', $result);
     // last ref into reset range should be ''
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('193012-0001', $result);
     // counter must be reset to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1931);
     // we use same fiscal year but different year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('193101-0002', $result);
     // counter must be 2
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1931);
     // we use different fiscal year but same year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('193112-0001', $result);
     // counter must be reset to 1
     // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START)
     $conf->global->SOCIETE_FISCAL_MONTH_START = 6;
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@0}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@0}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1940);
     // we use year 1940 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('194001-0001', $result);
     // counter must start to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1940);
     // we use same year but fiscal month after
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('194012-0001', $result);
     // counter must be reset to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1941);
     // we use same fiscal year but different year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('194101-0002', $result);
     // counter must be 2
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1941);
     // we use different discal year but same year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('194112-0001', $result);
     // counter must be reset to 1
     // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START) and we always want year of element
     $conf->global->SOCIETE_FISCAL_MONTH_START = 6;
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@=}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@=}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1950);
     // we use year 1950 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('195001-0001', $result);
     // counter must start to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1950);
     // we use same year but fiscal month after
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('195012-0001', $result);
     // counter must be reset to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1951);
     // we use same fiscal year but different year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('195101-0002', $result);
     // counter must be 2
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1951);
     // we use different discal year but same year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('195112-0001', $result);
     // counter must be reset to 1
     // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START) and we always want start year
     $conf->global->SOCIETE_FISCAL_MONTH_START = 6;
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@-}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@-}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1960);
     // we use year 1960 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('195901-0001', $result);
     // counter must start to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1960);
     // we use same year but fiscal month after
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('196012-0001', $result);
     // counter must be reset to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1961);
     // we use same fiscal year but different year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('196001-0002', $result);
     // counter must be 2
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1961);
     // we use different discal year but same year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('196112-0001', $result);
     // counter must be reset to 1
     // Now we try with a different fiscal month (defined by SOCIETE_FISCAL_MONTH_START) and we always want end year
     $conf->global->SOCIETE_FISCAL_MONTH_START = 6;
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@+}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@+}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1970);
     // we use year 1970 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('197001-0001', $result);
     // counter must start to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1970);
     // we use same year but fiscal month after
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('197112-0001', $result);
     // counter must be reset to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1971);
     // we use same fiscal year but different year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('197101-0002', $result);
     // counter must be 2
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 12, 1, 1971);
     // we use different fiscal year but same year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('197212-0001', $result);
     // counter must be reset to 1
     // Now we try with a reset every month (@99)
     $conf->global->SOCIETE_FISCAL_MONTH_START = 6;
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{yyyy}{mm}-{0000@99}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{yyyy}{mm}-{0000@99}';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1980);
     // we use year 1980 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('198001-0001', $result);
     // counter must start to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1980);
     // we use year 1980 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('198001-0002', $result);
     // counter must start to 2
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 2, 1, 1980);
     // we use year 1980 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('198002-0001', $result);
     // counter must start to 1
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1981);
     // we use year 1981 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($mysoc, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('198101-0001', $result);
     // counter must start to 1
     // Test with {t} tag
     $conf->global->SOCIETE_FISCAL_MONTH_START = 1;
     $conf->global->FACTURE_MERCURE_MASK_CREDIT = '{t}{yyyy}{mm}-{0000}';
     $conf->global->FACTURE_MERCURE_MASK_INVOICE = '{t}{yyyy}{mm}-{0000}';
     $tmpthirdparty = new Societe($this->savdb);
     $tmpthirdparty->initAsSpecimen();
     $tmpthirdparty->typent_code = 'TE_ABC';
     $localobject = new Facture($this->savdb);
     $localobject->initAsSpecimen();
     $localobject->date = dol_mktime(12, 0, 0, 1, 1, 1982);
     // we use year 1982 to be sure to not have existing invoice for this year
     $numbering = new mod_facture_mercure();
     $result = $numbering->getNextValue($tmpthirdparty, $localobject);
     $result2 = $localobject->create($user, 1);
     $result3 = $localobject->validate($user, $result);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals('A198201-0001', $result);
     // counter must start to 1
     return $result;
 }
コード例 #13
0
ファイル: BuildDocTest.php プロジェクト: remyyounes/dolibarr
    /**
     */
    public function testFactureBuild()
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

		$conf->facture->dir_output.='/temp';
		$localobject=new Facture($this->savdb);
    	$localobject->initAsSpecimen();
    	$localobject->socid=1;

    	// Crabe
    	$localobject->modelpdf='crabe';
    	$result=facture_pdf_create($db, $localobject, '', $localobject->modelpdf, $langs);

    	$this->assertLessThan($result, 0);
    	print __METHOD__." result=".$result."\n";

    	// Oursin
    	$localobject->modelpdf='oursin';
    	$result=facture_pdf_create($db, $localobject, '', $localobject->modelpdf, $langs);

    	$this->assertLessThan($result, 0);
    	print __METHOD__." result=".$result."\n";

    	return 0;
    }