PHP Classes

D3 EDI: Process information exchanged electronically

Recommend this page to a friend!
  Info   View files Documentation   Screenshots Screenshots   View files View files (35)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2021-11-18 (9 days ago) RSS 2.0 feedNot yet rated by the usersTotal: 20 This week: 6All time: 10,435 This week: 78Up
Version License PHP version Categories
d3edi 1.0Freeware7.2PHP 5, Databases, Content management
Description Author

This package can process information exchanged electronically.

It can perform operations to process messages to store and retrieve documents in a database.

Applications can extend base model classes to implement custom document support details for processing.

This package allows the creation and editing of customs documents using Web pages generated by the package.

The package can display documents on a Web page like widgets.

Picture of Uldis Nelsons
Name: Uldis Nelsons <contact>
Classes: 14 packages by
Country: Latvia Latvia
Innovation award
Innovation award
Nominee: 9x

Winner: 2x

 

Details

[EDIFACT messaging[(https://en.wikipedia.org/wiki/EDIFACT)

Features

- Collect EDI messages in DB - Other processes process collected messages and registries * status processed and ref records * status error and error message

used packages

DB Schema

DB Schema

Installation

The preferred way to install this extension is through composer.

Either run

$ composer require d3yii2/d3edi "*"

or add

"d3yii2/d3edi": "*"

to the require section of your composer.json file.

Methods

Usage

map edi fata to model attributes



class DepoEdiBooking extends BaseDepoEdiBooking
{
    public function loadEdi($ediMessage): void
    {
        $r = $ediMessage->readEdiMessage();
        $this->booking_ref_number = $r->readEdiDataValue(['RFF',['1'=>'BN']],1,0);
        $this->carier = $r->readEdiDataValue(['NAD',['1'=>'CA']],2,0);
        $this->containerType = $r->readEdiDataValue(['EQD',['1'=>'CN']],3,0);
        if(!$this->cont_type_id = CargoContTypeDictionary::getIdByEdiCode($containerType)){
            $this->cont_type_id = null;
            $this->addError('cont_type_id','Undefined container type: ' . $containerType);
        }
    }
}


procesing

        $cnt = 0;
        foreach(EdiMessage::find()->allNews() as $ediMessage){
            if(!$transaction = $this->module->db->begintransaction()){
                throw new \yii\db\Exception('can not start Begin transaction');
            }
            try {
                $ediBooking = new DepoEdiBooking();
                $ediBooking->loadEdi($ediMessage);
                if ($ediBooking->hasErrors() || !$ediBooking->validate()) {
                    $ediMessage->saveError($ediBooking->getErrors());
                    continue;
                }
                if (!$ediBooking->save()) {
                    throw new D3ActiveRecordException($ediBooking);
                }

                $ediMessage->saveProcessed($ediBooking);

                $transaction->commit();
                $cnt ++;
                continue;
            }catch (Exception $e){
                $transaction->rollBack();
                Yii::error($e->getMessage());
                Yii::error($e->getTraceAsString());
                $ediMessage->saveError($e->getMessage());
            }
        }

        return $cnt;

    }

Panle for unprocessed messages

For showing unprocessed messages can use panel solution Yii2Panel

add widget

echo \unyii2\yii2panel\PanelWidget::widget([
    'name' => 'MyAllerts',
]);

to module add parameter panels

class MyModule extends Module
{
    
    /
     * @var array panels for PanelWidgets
     */
    public $panels;

in module config add widget

        'mymodule' => [
            'class' => 'MyModule',
            'panels' => [
                'MyAllerts' =>
                [
                    [
                        'route' => 'edi/panel/message',
                     ]
                 ]
            ],
        ],

in EDI module can set role for access to panel. Otherwise every authorised user has access to panle widget

        'edi' => [
            'class' => 'd3yii2\d3edi\Module',
            'accessRulesMessageRoles' => ['Depo3EdiFull']
        ],
Screenshots  
  • ContainerBookingList
  Files folder image Files  
File Role Description
Files folder imagecomponents (1 file)
Files folder imagecontrollers (3 files)
Files folder imagedictionaries (2 files)
Files folder imagedoc (2 files)
Files folder imagegii (5 files)
Files folder imagelogic (1 file)
Files folder imagemessages (1 directory)
Files folder imagemigrations (3 files)
Files folder imagemodels (8 files, 1 directory)
Files folder imageviews (1 directory)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LeftMenu.php Aux. Auxiliary script
Plain text file Module.php Class Class source
Accessible without login Plain text file README.md Doc. Documentation

 Version Control Unique User Downloads Download Rankings  
 97%
Total:20
This week:6
All time:10,435
This week:78Up

For more information send a message to info at phpclasses dot org.