Varlık Yönetimi;

  • kuruma ait taşınır ve/veya taşınmaz tüm varlıkların tanımlandığı
  • bu varlıklara ait hareketlerin kaydedildiği
  • amortisman değerleme işlemlerinin yapıldığı

bölümdür. Detaylı bilgi için j-Platform varlık yönetimini inceleyiniz.


Örnek : Varlık Hareketleri Ekranı


DataExchange Web Servisi
package com.lbs.ws.test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.io.IOException;

import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;

import org.apache.axis2.AxisFault;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.rampart.handler.WSSHandlerConstants;
import org.apache.rampart.handler.config.OutflowConfiguration;
import org.apache.ws.security.WSPasswordCallback;
import org.junit.Before;
import org.junit.Test;

import com.lbs.util.LbsFileUtil;
import com.lbs.util.TestGlobal;
import com.lbs.ws.de.DataExchangeServiceStub;
import com.lbs.ws.de.Describe;
import com.lbs.ws.de.DescribeResponse;
import com.lbs.ws.de.GetByKey;
import com.lbs.ws.de.GetByKeyResponse;
import com.lbs.ws.de.RemoveByKey;
import com.lbs.ws.de.RemoveByKeyResponse;
import com.lbs.ws.de.Save;
import com.lbs.ws.de.SaveResponse;
import com.lbs.ws.de.xsd.DescribeParameters;
import com.lbs.ws.de.xsd.ExchangeParameters;
import com.lbs.ws.de.xsd.ExportParameters;
import com.lbs.ws.de.xsd.ImportParameters;

/**
 * 
 * This file includes unit test cases of j-guar dataExchange Web Services. <br>
 * required library<br>
 * 1- axis2 xxx<br>
 * 2- rampart xxx<br>
 * 
 * 
 * Önceden belirlenmiş iş nesneleri için DataExchangeWS metodları test edilecektir.
 * 
 * Önemli Linkler : 
 * güvenlik modülü olarak rampart kullanılıyor. İlgili detay bilgiler 
 * https://axis.apache.org/axis2/java/rampart/developer-guide.html
 * 
 * TODO : OutflowConfiguration replacement ine bakılacak. 
 * 
 * @author Servet.Karabas, Devanshu.Bawa
 * 
 */
public class DataExchangeWSTest implements CallbackHandler {

    String workingDir = null;
    DataExchangeServiceStub stub = null;
    ConfigurationContext ctx = null;
    DescribeResponse describeResp = null; // TODO : her bir BO için farklı
                                            // olmalı save metodunda
                                            // kullanılıyor. Yada başka bir
                                            // çözüm bulunacak.
    int savedPrimaryKey = 0;

    /**
     * rampart and rahas modules have to be deployed in modules directory. <br>
     * Module directory must be in the resource directory<br>
     * modules_directory_path must be given without modules<br>
     * createConfigurationContextFromFileSystem(modules_directory_path,
     * axis2.xml)<br>
     * 
     * to get more info :<br>
     * {@link http://wso2.com/library/3415/} <br>
     * <br>
     * 
     * {@link http://wso2.com/library/585/}<br>
     * <br>
     * <br>
     * projenin resource dizini altına modules dizini açılıp rampart and rahas
     * .mar dosyaları kopyalanır.<br>
     * createConfigurationContextFromFileSystem(...,...) de ilk parametresi
     * olarak modules yazılmadan verilir.
     */
    @Before
    public void setup() {
        try {
            workingDir = System.getProperty("user.dir");
            ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(workingDir
                            + "\\res", null);
            stub = new DataExchangeServiceStub(ctx, TestGlobal.m_RootURL
                    + "DataExchangeService");

            ServiceClient client = stub._getServiceClient();
            
            /*Rampart is deployed as a module in Axis2, in the security phase.*/
            
            client.engageModule("rampart");
            client.engageModule("addressing");
            OutflowConfiguration outflowConfig = new OutflowConfiguration();
            outflowConfig.setActionItems("UsernameToken");
            outflowConfig.setUser(TestGlobal.userName);
            outflowConfig.setPasswordCallbackClass(this.getClass().getName());
            stub._getServiceClient()
                    .getOptions()
                    .setProperty(WSSHandlerConstants.OUTFLOW_SECURITY,
                            outflowConfig.getProperty());
            stub._setServiceClient(client);
        } catch (AxisFault e) {
            e.printStackTrace();
        }
    }

    /**
     * 
     * Bu testte aşağıdaki nesneler için describe metodu çalıştırılacaktır.
     * "MMXOItem",
     * "LOXOInvoice",
     * "LOXODispatch",
     * "LOXOInvoice",
     * 
     * <p>Bu metod bir nesneye ait dtd ve xml tanımlarının nasıl olduğunu öğrenmek
     * için kullanılır. Bu metoda nelerin açıklanması istendiğini belirten
     * açıklama ayarları yollanır. Metod açıklanması istenen her seyi açıklayan
     * bir nesne döner.
     * 
     * 
     * - Fatura - irsaliye - Sipariş - Muhasebe Fişi
     * 
     * @return DescribeResponse
     * @throws Exception
     */
    @Test
    public void testaDescribe() throws Exception {
        try {

            if (stub == null) {
                setup();
            }

            Describe desc = new Describe();
            DescribeParameters inputParams = new DescribeParameters();
            inputParams.setInitRequiredXML(true);
            inputParams.setSecKeyXML(true);
            inputParams.setFirm(TestGlobal.firm);
            inputParams.setLanguage(TestGlobal.lang);
            inputParams.setDescriptive(true);
            inputParams.setPeriod(TestGlobal.period);
            
            for (String boname : TestGlobal.boExchangeNames) {
                inputParams.setBoName(boname);
                desc.setParameters(inputParams);
                describeResp = stub.describe(desc);
                assertEquals(true, describeResp.get_return().getSuccessful());
                System.out.println("DataExchangeWD Describe" + boname
                        + "response KeyXML : \n"
                        + describeResp.get_return().getSecKeyXML());
                
                break;
            }

        } catch (Exception ex) {
            ex.printStackTrace();
            fail(ex.getMessage());
        }
    }

    /**
     * <b>Aşağıdaki iş nesneleri için çalıştırılacak.</b>
     * <br>"MMXOItem",
     * <br>"LOXOInvoice",
     * <br>"LOXODispatch",
     * <br>"LOXOInvoice",
     * 
     * <p>Bu metod bir nesneyi kaydetmek için kullanılır. Metoda nesne kaydetme ayarları ve nesne xml tanımı yollanır. 
     * Bu metod verilen xml'deki nesneyi olustusturur ve xml'de nesne için hangi kaydetme islemi hedefleniyorsa ona göre davranır. 
     * xml içinde nesne için su olasılıklar tanımlanabilr: "nesneyi yarat", "varolan nesneyi güncelle", "nesneyi sil". 
     * Bu tanımların her biri için metod ayrı bir yöntem izler. Eğer "nesneyi yarat" seçeneği belirtildiyse, eğer nesne veri tabanında yoksa 
     * yeni nesne kaydedilir; nesne veri tabanında varsa nesne kaydetme ayarlarındaki islem uygulanır. Bu durum için 3 olasılık vardır: 
     * "nesneyi yeni kaydetmeye zorla", "varolan nesneyi güncelle", "islem yapma". 
     * 
     * <p>Nesneyi kaydetmeye zorla durumunda veri tabanında bulunan nesne silinir ve verilen nesne yeni olarak kaydedilir. 
     * Varolan nesneyi güncelle durumunda varolan nesne güncellenir. 
     * İslem yapma durumunda ise bu nesne veri tabanında olduğu haliyle bırakılır, islem yapılmaz. 
     * 
     * <p>Metoda yollanan nesne için xml'de güncelleme seçeneği seçildiyse, bu durumda nesne xml tanımındaki bilgiler kullanılarak 
     * veri tabanından okunmaya çalısılır. Eğer nesne veri tabanında varsa ve okuma basarılı olduysa xml tanımında belirtilen 
     * tüm özellikler veri tabanı özelliklerinin ezecek sekilde nesne güncellenir. Örneğin nesne ait sadece bir tarih alanı 
     * güncellenmek isteniyorsa bu metoda yollanan xml tanımında nesne okumak için gerekli ikincil anahtar ve 
     * hazırlık (init-required) alanları haricinde sadece bu güncellenecek tarih alanı dolu olmalıdır. 
     * Yoksa xml'de doldurulmus olan tüm alanlar veri tabanındaki değerleri ezer. Aynı sey link nesneler için de geçerlidir. 
     * Metoda yollanan xml içinde nesne silinmek üzere isaretlendiyse nesne xml'deki bilgilerle okunmaya çalısılır, 
     * okuma basarılı olursa nesne silinir. Nesne kaydetme metodunda dikkat edilmesi gerekli son nokta ise xml tanımında 
     * bulunan bağlantılı (link) nesneler için nesnenin ikincil anahtar değeri ile bulunamadığı durumda ortaya çıkar. 
     * Örneğin faturaya ait cari hesap bilgisi veri tabanında bulunamıyorsa bu durumda 2 yöntem izlenebilir. 
     * Bulunamayan nesne xml'deki bilgiler kullanılarak yaratılabilir ya da kaydetme islemi basarısız olur. 
     * Bulunamayan nesnelerin kaydedilmesi özelliği kaydetme ayarları nesnesi ile açılabilen bir özelliktir.
     * 
     * @return DescribeResponse
     * @throws Exception
     */
    @Test
    public void testbSave() throws Exception {
        try {
            ImportParameters parameters = new ImportParameters();
            parameters.setFirm(TestGlobal.firm);
            parameters.setPeriod(TestGlobal.period);
            parameters.setLanguage(TestGlobal.lang);

            parameters.setBoName(TestGlobal.boNames[0]); // AMXOAsset için
            parameters.setUseGivenPrimaryKeys(false);
            parameters.setSkipInsertExisting(true);
            parameters.setSingleTransaction(true);

            Save save = new Save();
            save.setParameters(parameters);
            
//            save.setObjectXML(describeResp.get_return().getSecKeyXML());
            save.setObjectXML(LbsFileUtil.readTextFile("data//AMXFAssetSample1.xml"));
            SaveResponse saveResponse = stub.save(save);
            
            assertEquals(true, saveResponse.get_return().getSuccessful());
            savedPrimaryKey = saveResponse.get_return().getPrimaryKeyArr()[0];
        } catch (Exception e) {
            fail(e.getMessage());
        }
    }
    /**
     * 
     * 
     * 
     * 
     * @throws Exception
     */
    @Test
    public void testSave_AMBOSlip() throws Exception {
        try {
            if (stub == null) {
                setup();
            }
            ImportParameters parameters = new ImportParameters();
            parameters.setFirm(TestGlobal.firm);
            parameters.setPeriod(TestGlobal.period);
            parameters.setLanguage(TestGlobal.lang);

            parameters.setBoName("com.lbs.unity.am.bo.AMBOSlip"); // AMXOAssetSlip için
            parameters.setUseGivenPrimaryKeys(false);
            parameters.setSkipInsertExisting(true);
            parameters.setSingleTransaction(true);

            Save save = new Save();
            save.setParameters(parameters);
            
//            save.setObjectXML(describeResp.get_return().getSecKeyXML());
            save.setObjectXML(LbsFileUtil.readTextFile("data//AMXOSlipSample.xml"));
            SaveResponse saveResponse = stub.save(save);
            
            assertEquals(true, saveResponse.get_return().getSuccessful());
            savedPrimaryKey = saveResponse.get_return().getPrimaryKeyArr()[0];
        } catch (Exception e) {
            fail(e.getMessage());
        }
    }

   



    /**
     * Callback Handler
     */
    @Override
    public void handle(Callback[] callbacks) throws IOException,
            UnsupportedCallbackException {
        try {
            for (int i = 0; i < callbacks.length; i++) {
                WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];
                String id = pwcb.getIdentifier();
                if (TestGlobal.userName.equals(id)) {
                    pwcb.setPassword(TestGlobal.password);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            fail(e.getMessage());
        }
    }

}

AMXFAssetSample1.xmlAMXFAssetSample2.xmlAMXOSlipSample.xml

Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım