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

  Files folder image Files  /  components  
File Role Description
  Plain text file MessageProcessing.php Class Class source

  Files folder image Files  /  controllers  
File Role Description
  Plain text file PanelController.php Class Class source
  Plain text file ProcessIncomingEdiController.php Class Class source
  Plain text file TestController.php Class Class source

  Files folder image Files  /  dictionaries  
File Role Description
  Plain text file EdiCompanyDictionary.php Class Class source
  Plain text file EdiMessageTypeDictionary.php Class Class source

  Files folder image Files  /  doc  
File Role Description
  Accessible without login Image file DbSchema.png Data Auxiliary data
  Accessible without login Plain text file DbSchema.schemaxml Data Auxiliary data

  Files folder image Files  /  gii  
File Role Description
  Accessible without login Plain text file ediGiiantNModule.json Data Auxiliary data
  Accessible without login Plain text file edi_companyGiiantModel.json Data Auxiliary data
  Accessible without login Plain text file edi_messageGiiantModel.json Data Auxiliary data
  Accessible without login Plain text file edi_message_refGiiantModel.json Data Auxiliary data
  Accessible without login Plain text file edi_message_typeGiiantModel.json Data Auxiliary data

  Files folder image Files  /  logic  
File Role Description
  Plain text file MessageLogic.php Class Class source

  Files folder image Files  /  messages  
File Role Description
Files folder imagelv (1 file)

  Files folder image Files  /  messages  /  lv  
File Role Description
  Accessible without login Plain text file depoedi.php Aux. Auxiliary script

  Files folder image Files  /  migrations  
File Role Description
  Plain text file m200814_220707_init.php Class Class source
  Plain text file m201130_200707_messages_add_filename.php Class Class source
  Plain text file m210404_080707_message_add_compnent.php Class Class source

  Files folder image Files  /  models  
File Role Description
Files folder imagebase (4 files)
  Plain text file EdiCompany.php Class Class source
  Plain text file EdiMessage.php Class Class source
  Plain text file EdiMessageQuery.php Class Class source
  Plain text file EdiMessageRef.php Class Class source
  Plain text file EdiMessageRefQuery.php Class Class source
  Plain text file EdiMessageType.php Class Class source
  Plain text file EdiMessageTypeQuery.php Class Class source
  Plain text file SysModels.php Class Class source

  Files folder image Files  /  models  /  base  
File Role Description
  Plain text file EdiCompany.php Class Class source
  Plain text file EdiMessage.php Class Class source
  Plain text file EdiMessageRef.php Class Class source
  Plain text file EdiMessageType.php Class Class source

  Files folder image Files  /  views  
File Role Description
Files folder imagepanel (1 file)

  Files folder image Files  /  views  /  panel  
File Role Description
  Accessible without login Plain text file message.php Aux. Auxiliary script

 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.