jueves, 10 de noviembre de 2016

ACTUALIZAR DATOS SAP B1 SDK DI API C# objetos


        SAPbobsCOM.Company MiconexionCatalogo = new SAPbobsCOM.Company();/*se usa para las empresa que es la principal*/
   public void Actualizar_Sincronizado(string Objeto,string Codigo,string userSAP,string passSAP)
        {
            SAPbobsCOM.Company MiconexionCatalogo = new SAPbobsCOM.Company();
            MiconexionCatalogo.CompanyDB = "PRINCIPAL";
            MiconexionCatalogo.DbUserName = "USERBD";
            MiconexionCatalogo.DbPassword = "PASSWORD";
            MiconexionCatalogo.UserName = "ManagerSAP";/*userSAP;usuario SAP*/
            MiconexionCatalogo.Password = "ADMIN";/*passSAP;Password SAP*/
            MiconexionCatalogo.Server = "LOCALHOST";
            MiconexionCatalogo.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005;
            if (Objeto=="SN" )
            {
                if (MiconexionCatalogo.Connect() != 0)
                {
                    RtxtLog.Text = RtxtLog.Text + "Error al Conectar a SAP: " + Miconexion.GetLastErrorDescription().ToString() + "\n";
                }
                else
                {
                    SAPbobsCOM.BusinessPartners Socio;
                    Socio = (SAPbobsCOM.BusinessPartners)MiconexionCatalogo.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
                    Socio.GetByKey(Codigo);
                    Socio.UserFields.Fields.Item("U_dato").Value = 1;
                    Socio.Update();
                }
                MiconexionCatalogo.Disconnect();
            }
            else if(Objeto=="Art")
            {
                if (MiconexionCatalogo.Connect() != 0)
                {
                    RtxtLog.Text = RtxtLog.Text + "Error al Conectar a SAP: " + Miconexion.GetLastErrorDescription().ToString() + "\n";
                }
                else
                {
                    SAPbobsCOM.Items Articulo;
                    Articulo = (SAPbobsCOM.Items)MiconexionCatalogo.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
                    Articulo.GetByKey(Codigo);
                    Articulo.UserFields.Fields.Item("U_dato1").Value = 1;
                    Articulo.Update();
                }
                MiconexionCatalogo.Disconnect();
            }
            else if(Objeto=="Agente")
            {
                if (MiconexionCatalogo.Connect() != 0)
                {
                    RtxtLog.Text = RtxtLog.Text + "Error al Conectar a SAP: " + Miconexion.GetLastErrorDescription().ToString() + "\n";
                }
                else
                {
                    SAPbobsCOM.SalesPersons Agente;
                    Agente = (SAPbobsCOM.SalesPersons)MiconexionCatalogo.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oSalesPersons);
                    Agente.GetByKey(Convert.ToInt32(Codigo));
                    Agente.UserFields.Fields.Item("U_Dato").Value=1;
                    Agente.Update();
                }
                MiconexionCatalogo.Disconnect();
            }
        }
        private void eventLog1_EntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e)
        {
        }
    }

PROGRAMAR AGREGAR DIRECCIONES BUSINESS PARTNER SAP B1 DI API C#

                        /*para agregar direcciones que exista en el cliente*/
                        sqlconAddress.Open();
                        string sQueryAddress;
                        sQueryAddress = "SELECT [Address], [CardCode], [Street], [Block], [ZipCode], [City], [Country]," +
                         "[State],[LineNum],[TaxCode],[AdresType] FROM CRD1 WHERE CardCode='" + CardCode + "' ORDER BY LineNum";
                        SqlCommand cmdAddress;
                        SqlDataReader drAddress;
                        cmdAddress = new SqlCommand(sQueryAddress, sqlconAddress);
                        drAddress = cmdAddress.ExecuteReader();
                        if (drAddress.HasRows)
                        {
                            while (drAddress.Read())
                            {
                                MiSocio.Addresses.Add();
                                MiSocio.Addresses.SetCurrentLine(Convert.ToInt32(drAddress["LineNum"].ToString()));
                                MiSocio.Addresses.AddressName = drAddress["Address"].ToString();
                                MiSocio.Addresses.Street = drAddress["Street"] == null ? string.Empty : drAddress["Street"].ToString();
                                MiSocio.Addresses.Block = drAddress["Block"] == null ? string.Empty : drAddress["Block"].ToString();
                                MiSocio.Addresses.Country = drAddress["Country"].ToString();
                                MiSocio.Addresses.ZipCode = drAddress["ZipCode"] == null ? string.Empty : drAddress["ZipCode"].ToString();
                                MiSocio.Addresses.City = drAddress["City"].ToString();
                                MiSocio.Addresses.State = drAddress["State"] == null ? string.Empty : drAddress["State"].ToString();
                                MiSocio.Addresses.TaxCode = drAddress["TaxCode"] == null ? string.Empty : drAddress["TaxCode"].ToString();
                                switch (drAddress["AdresType"].ToString())
                                {
                                    case "B":
                                        MiSocio.Addresses.AddressType = BoAddressType.bo_BillTo;
                                        break;
                                    case "S":
                                        MiSocio.Addresses.AddressType = BoAddressType.bo_ShipTo;
                                        break;
                                }
                            }
                        }
                        drAddress.Close();
                        sqlconAddress.Close();
                        /*termina de agregar direcciones*/
                        /*para agregar Agentes que exista en el cliente*/

EJEMPLO SUBIR CONTACTOS SAP B1 SDK DI API EN C#

SAPbobsCOM.BusinessPartners MiSocio;
         MiSocio = (SAPbobsCOM.BusinessPartners)Miconexion.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
                    SAPbobsCOM.BPAddresses Direcciones;
                    Direcciones =MiSocio.Addresses;          

sqlconContact.Open();
                        string sQueryContact;
                        sQueryContact = "SELECT [CardCode], [Name], [Position], [Address], [Tel1], [Tel2], [Cellolar], [Fax], [E_MailL], [Pager],"+
                            "[Notes1], [Notes2], [Password], [BirthPlace], [Gender], [Profession], [BirthCity], [Active] FROM OCPR WHERE CardCode='"+CardCode+"'";
                        SqlCommand cmdContact;
                        SqlDataReader drContact;
                        cmdContact = new SqlCommand(sQueryContact, sqlconContact);
                        drContact = cmdContact.ExecuteReader();
                        if (drContact.HasRows)
                        {
                            int registro = 0;
                            while (drContact.Read())
                            {
                                MiSocio.ContactEmployees.Add();
                                MiSocio.ContactEmployees.SetCurrentLine(registro);
                                MiSocio.ContactEmployees.Name = drContact["Name"].ToString();
                                MiSocio.ContactEmployees.Pager = drContact["Pager"] == null ? string.Empty : drContact["Pager"].ToString();
                                MiSocio.ContactEmployees.Remarks1 = drContact["Notes1"].ToString();
                                MiSocio.ContactEmployees.Remarks2 = drContact["Notes2"].ToString();
                                MiSocio.ContactEmployees.Phone1 = drContact["Tel1"].ToString();
                                MiSocio.ContactEmployees.Phone2 = drContact["Tel2"].ToString();
                                MiSocio.ContactEmployees.Address = drContact["Address"].ToString();
                                MiSocio.ContactEmployees.Position = drContact["Position"].ToString();
                                MiSocio.ContactEmployees.MobilePhone = drContact["Cellolar"].ToString();
                                MiSocio.ContactEmployees.E_Mail = drContact["E_mailL"].ToString();
                                switch(drContact["Active"].ToString())
                                {
                                    case "Y":
                                        MiSocio.ContactEmployees.Active = BoYesNoEnum.tYES;
                                        break;
                                    case "N":
                                        MiSocio.ContactEmployees.Active = BoYesNoEnum.tNO;
                                        break;
                                }
                                registro++;
                            }
                        }
                        drContact.Close();
                        sqlconContact.Close();

EJEMPLO RELLENAR UN LISTBOX DESDE UNA VISTA SQL

      rellenar_list_box("SincroSN", LstClte, "Cardcode");



 public void rellenar_list_box(string vista,ListBox namelist,string campo)/*Rellena los listbox de articulos, agentes y socios*/
        {
            sqlcon = new SqlConnection("server=localhost;Initial Catalog=principaBD;uid=VISTA;pwd=****");
            sqlcon.Open();
            string sQuery;
            sQuery = "SELECT * from "+vista+"";
            SqlCommand cmd;
            SqlDataReader dr;
            cmd = new SqlCommand(sQuery, sqlcon);
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                namelist.Items.Add(dr[campo].ToString());
            }
            dr.Close();
            sqlcon.Close();
        }

TRANSACCIONES SAP B1

case when t0.transtype=18 or t0.transtype=19 then 'Servicios Tours' end as 'cod art',
case when t0.transtype=18 then 'Factura Servicios'
when t0.transtype=19 then 'Nota de Crédito'
when t0.transtype=30 then 'A/D Reclasificacion'
when t0.transtype=-3 then 'saldos finales'
when t0.transtype=59 then 'entrada de mercancía'
when t0.transtype=46 then 'pago de aceredor'
when t0.transtype=20 then 'Entrada de mercancía op'
else t0.transtype end as 'descripcion',

pedido en ordenes
oitm
articulos
maximos
minimos
consumo en el mes (suma total salidas)
pedidos articulo
suma total de stock, actual.
15--entrega
16--devoluciones
13--Factura de deudores
14--nota de crédito de clientes
132--Factura de correccion

20--Entrada de mercancias
21--Devolucion de mercancias
18---Factura de proveedores
19--nota de crédito proveedores

-2 -- saldo incial
58--actualizacion de stock
59--Entrada de mdercancias
67--traslados
68--instrucciones de produccion

-1 -- Transaccion (todas)
162 -- Revalorizacion de inventario
69-- Precio al desembarque

COMANDOS MAS USADOS SQL

COLLATE Latin1_General_CI_AS // cuando el lenguaje cambia de una bd a otra y queremos comparar datos entre ellas.

CONVERT (TIPODATO,DATO).


DATEDIFF(D,FECHA1,FECHA2) >1


ISNULL(dato,0)  //cuando un valor de el datos es nulo, lo pone en 0.

DATENAME(dw,FECHA) DW NOMBRE DIA,MONTH MES,

DATEPART(DAY, FECHA) ordinal del día 1, 2,3,4,



CONEXIONES ELIMINAR DE LA BD SQL SERVER

USE master
GO

SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''

Set @DBName = 'pruebasres'
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)

IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END

LINKEAR SERVIDORES SQL

sp_linkedservers



 EXEC sp_addlinkedserver
   @server='cadsap',
   @srvproduct='',
   @provider='SQLNCLI10',
   @datasrc='SERVER'


   SELECT top 10 * FROM [SERVER].[BDPRINCIPAL].[dbo].[ocrd]
   where registrationDAte >= '20130814'

EJEMPLO DE CURSORES SQL SERVER (CUANTO EXISTE TRIGGER EN LA TABLA)



DECLARE @id_venta int
 DECLARE venta_cursor CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR
select convert(int,Vista_Aux.dbo.Maestro.Observaciones)
from Vista_Aux.dbo.Maestro;


OPEN venta_cursor

FETCH NEXT FROM venta_cursor
INTO @id_venta

WHILE @@FETCH_STATUS = 0
BEGIN
 UPDATE Ventas
set
ventas.id_cajero=1,
ventas.fecha=m.fechaticket,
ventas.descuento=m.descuentototal,
ventas.tipo_de_cambio=m.tc,
ventas.status_pago=1
from ventas as v
inner join Vista_Aux.dbo.Maestro as m on v.id_venta=convert(int,m.Observaciones)
where  v.id_venta=@id_venta
    FETCH NEXT FROM venta_cursor
    INTO @id_venta
END
CLOSE venta_cursor;
DEALLOCATE venta_cursor;

ECLARE @id_dev char(10)
 DECLARE dev_cursor CURSOR FOR  
SELECT [id_venta]
  FROM [Vista_Aux].[dbo].[Devoluciones];
 
OPEN dev_cursor
 
FETCH NEXT FROM dev_cursor  
INTO @id_dev
 
WHILE @@FETCH_STATUS = 0
BEGIN
 UPDATE Ventas
set status_pago=-1
where id_venta=@id_dev
    FETCH NEXT FROM dev_cursor  
    INTO @id_dev
END  
CLOSE dev_cursor;
DEALLOCATE dev_cursor;